All Products
Search
Document Center

SchedulerX:Throttle job concurrency with priority queues

Last Updated:Mar 11, 2026

When many jobs start at the same time -- for example, a batch of daily jobs all triggering at midnight -- the scheduling backend can become overloaded. SchedulerX provides application-level throttling to prevent this by limiting how many jobs run simultaneously. Jobs that exceed the concurrency limit wait in a queue instead of being discarded. You can also assign priorities to queued jobs so that higher-priority jobs run first when a slot becomes available.

Important

Job priority settings apply only within a single application. They do not affect scheduling in other applications.

When to use application-level throttling

Use application-level throttling when your workload has burst peaks -- for example, hundreds of daily jobs with the same start time. The queue mechanism spaces out job execution to prevent the backend from being overwhelmed.

ScenarioRecommendation
Burst peaks (many jobs start at the same time)Use application-level throttling with or without priority queues
Sustained high-frequency load (minute-level jobs)Use client-side throttling or scale the client's processing capacity instead
Note

Throttling and priority queues are designed for burst-peak scenarios. A queue under sustained load leads to buildup rather than smooth execution.

Set up concurrency throttling

Concurrency throttling limits the number of jobs that run at the same time for an application. When the limit is reached, new jobs enter a waiting queue.

Step 1: Enable flow control

  1. In the SchedulerX console, create or edit an application group. For details, see Create an application group.

  2. In the Advanced Configuration section, turn on Flow Control. This toggle is off by default.

  3. Set Number of concurrent task instances to the maximum number of jobs that can run simultaneously.

Flow Control configuration

Step 2: Verify the queue behavior

  1. Create three jobs in the application group (for example, hello_jobA, hello_jobB, and hello_jobC).

    Three jobs created in the application group

  2. Click Run once in the Operation column for each job to trigger them.

  3. In the left-side navigation pane, click Instances. On the Task instance List tab, verify that:

    • hello_jobA is running.

    • hello_jobB and hello_jobC are waiting in the pool.

  4. After hello_jobA completes, hello_jobB enters the execution queue.

The concurrency limit is enforced: excess jobs queue up rather than running simultaneously or being dropped.

Add priority-based preemption

Priority-based preemption builds on concurrency throttling. Each job gets a priority level (high, medium, or low). When a queue slot opens, the highest-priority waiting job runs next, regardless of submission order.

The concept is similar to how Yet Another Resource Negotiator (YARN) isolates resources for jobs with different priorities:

YARN priority-based queue mechanism

Step 1: Assign priorities to jobs

When creating or editing a job, set the priority level to high, medium, or low.

Job priority configuration

Step 2: Test preemption behavior

To observe how priority preemption works, enable throttling for the application (for example, dts-all.hxm) and set Number of concurrent task instances to 1 so that only one job runs at a time. Then create three jobs with different priorities:

JobPriority
Job AMedium
Job BLow
Job CHigh

Trigger the jobs in this order: medium, low, high.

Three jobs with different priorities

Expected result:

  1. Job A (medium) starts immediately because no other job is running.

  2. Job B (low) and Job C (high) enter the queue.

  3. After Job A completes, one slot opens. Job C (high) runs next because it has higher priority than Job B (low).

  4. Job B (low) runs last.

When a slot opens, the highest-priority job runs next -- not the one submitted first.

Constraints and behavior

ConstraintDetail
Priority scopePriorities apply within a single application only. Setting a high priority on your jobs does not cause them to run before jobs in other applications.
Queue behavior under sustained loadThe queue mechanism works for burst peaks. For sustained high-frequency workloads, the queue builds up faster than it drains. Use client-side throttling or scale the client's processing capacity for minute-level jobs.

FAQ

Can I use job priorities to run my jobs before jobs in other applications?

No. Job priorities are scoped to a single application. A high-priority job in your application does not affect scheduling in other applications.

Should I use throttling for minute-level jobs?

Throttling and queue-based scheduling work for burst peaks where many jobs start at the same time. For minute-level jobs with sustained high throughput, the queue can back up faster than it drains. In that case, throttle on the client side or scale up the client's processing capacity.