Queues in an Application Server Independent Environment

Sterling B2B Integrator uses fair-share scheduling, which is in-memory queuing and caching, so you can set a global thread limit and allocate resources on a queue-by-queue basis. This enables flexible management of your workload.

The global thread limit is the maximum number of business processes that can run simultaneously in Sterling B2B Integrator. You can change the thread limit and queue the resource allocations in the install_dir/properties/noapp.properties_platform_ifcresources_ext file. The thread limit is set in the MaxThreads property. For more information about the MaxThreads property, refer to Tuning Queues.

You can set both a maximum and minimum thread number for each queue you use. Sterling B2B Integrator includes nine queues (Q1 to Q9). When you check in a business process, you must assign a queue to process the business process.

Each queue can use its minimum thread number always, but can never exceed its maximum thread number. The sum of the minimum numbers should be less than the MaxThreads limit.

The following example procedure explains the fair-share scheduling process:
  1. Open the install_dir/noapp.properties_platform_ifcresources_ext file using a text editor.
  2. Set the global number of threads as 16 by entering 16 as the new MaxThreads value.
  3. Determine that queue Q1 is for small items and set the MinPoolSize.1 value to 10 and the MaxPoolSize.1 value to 16. This means that this queue always has 10 threads available for use, but if no other queues are using threads, this queue can use all 16 threads.
  4. Determine that according to the number of small items requiring processing, queue Q1 requires a resource allocation of 70% of the total resources, and you enter 70 as the new ResourceAllocation.1 value.
  5. Determine that queue Q8 is for batch processing and set the MinPoolSize.8 value to 1 and the MaxPoolSize.8 value to 4.
  6. Determine that according to the number of batch items requiring processing, queue Q8 requires a resource allocation of 30% of the total resources, and you enter 30 as the new ResourceAllocation.8 value.
  7. During processing, different conditions arise, as shown in the following examples:
    • If there is no batch processing for queue Q8, but a lot of processing for queue Q1, queue Q1 uses all the 16 threads to complete processing faster.
    • If there is some batch processing for queue Q8, but also some processing for queue Q1, queue Q1 uses up to 12 threads to complete processing faster, while queue Q8 uses up to 4 threads to complete processing faster. These numbers are according to the percentages applied to the MaxThreads value of 16. In the case of queue Q1 with 70% of resource allocations, it is 16 *0.70 = 11.2. In the case of queue Q8 with 30% of resource allocations, it is 16 * 0.30 = 4.8 rounded to 5, but because MaxPoolSize.8 is set to 4, only 4 threads can be used by queue Q8, enabling the 12th thread to be used by queue Q1.
    • If there is no processing for queue Q1, but a lot of processing for queue Q8, queue Q8 uses all 4 threads to complete processing faster, because the MaxPoolSize.8 for queue Q8 is 4.