Specialized Administration > Site Maintenance > Queue Management > Understanding Background Queues > High Availability Queue Processing
  
High Availability Queue Processing
How queue entries are processed is determined by your method server setup and, when multiple background servers are running, how queues are assigned to these background method servers.
When installing Windchill, there is an option to create a background method server for processing queue entries (if your system has enough CPUs or cores). If your system is too small or the option to create background method server was not selected, then all processing is done through the foreground method server. Queue entry execution order is always determined by the type of queue (schedule, pool, or process) that executes the entry. When only one method server is configured, you cannot set up any special queue processing. However, most scalable configurations require that one or more background method servers are configured.
When there is one background method server set up for executing queue entries, then the execution of queue entries is not affected by user interactions with Windchill. How fast the queue entries execute is based on the available memory and speed of the server. Queue execution could be slowed when the background method server is processing entries at full capacity or execution could be stopped altogether if the method server is taken off line for any reason.
When multiple background method servers are set up, you can assign queue groups to multiple background method servers. High availability of a queue is supported when a queue is assigned to a queue group and that group is configured to run by more than one background method server. Using this type of configuration ensures continuous processing of process and schedule queue entries when a background method server is off line. When a process queue is assigned to multiple background method server only one of these servers is granted execution privileges at a time. This execution privilege remains with the one server while there are queue entries to be executed. The execution privilege can and will move between servers as new work becomes available.
For pool queues, assigning pool queue groups in a high availability configuration ensures continuous processing of queue entries when a background method server is off line and can also improve performance. The improved performance is because pool queues support concurrent queue entry execution. When there are multiple queue entries in a pool queue, queue entries can be executed by any of the background method servers to which the queue is assigned and processing of one entry is not dependent on the completion of another entry, nor is there any guarantee of order of execution with these queues.
When a queue entry from a queue that is assigned to multiple background method servers executes, the first background method server to request the task processes the queue entry task. After the task request is accepted, any other background method server to which the queue is assigned will find no task to process when it makes its request to execute the same queue entry task. This ensures that the queue entry is executed only one time.
On a system that has just one method server or only one foreground and one background method server, you cannot configure high availability queue processing.
* 
When a queue is assigned to multiple background method servers, there is no way to predict which method server will execute corresponding queue entries. Be aware that the execution information related to the queue entry is only logged in the method server that executed the entry task. Therefore when using a high availability queue configuration and troubleshooting queue entry execute problems, you must check all method server logs used in the configuration.
To set up queue groups in a high availability configuration, complete the steps described in Configuring Background Method Servers. Be sure to specify the queue groups set up for high availability queues in the startup commands of multiple background servers.