SchedulerX for XXL-JOB では、ジョブレベルとアプリケーションレベルの速度制限を構成して、システムリソースを適切に割り当てることができます。これにより、過剰な数のジョブによって引き起こされるシステムの過負荷とリソースの過剰消費を防ぎます。
ジョブレベルの速度制限
オープンソースの XXL-JOB は、クライアントレベルで速度制限を実装するブロッキング戦略を提供します。この戦略では、指定されたエグゼキュータ上でジョブがシリアルに実行されることのみを保証できます。複数のエグゼキュータが構成されている場合、グローバルなジョブのべき等性は保証できません。
SchedulerX for XXL-JOB は、ジョブレベルの速度制限をサポートしています。ジョブレベルの速度制限を構成するには、SchedulerX for XXL-JOB コンソール にログインします。管理するインスタンスを見つけ、その ID をクリックします。左側のナビゲーションウィンドウで、[タスク管理] をクリックします。[タスク管理] ページで、管理するジョブを見つけ、[操作] 列の [編集] をクリックします。基本構成ステップの [詳細設定] セクションで、[タスクの同時実行数] パラメーターを構成して、ジョブの同時実行数を指定します。

値 1 は、ジョブの実行がべき等であることを指定します。ジョブの実行が次のスケジュール時間まで続く場合、次のスケジュールはスキップされます。
アプリケーションレベルの速度制限
アプリケーションに多数のジョブを作成し、それらのジョブを同時に実行すると、バックエンドが過負荷になります。この場合、アプリケーションレベルの速度制限を構成できます。
たとえば、データプラットフォーム用のアプリケーションを作成し、毎晩前日のオフラインデータを処理するジョブを作成するとします。午前 9 時 30 分までにデータ処理を完了する必要があり、すべてのジョブを 00:30:00 に実行するようにスケジュールすると、過負荷のためにバックエンドがクラッシュします。
この場合、SchedulerX for XXL-JOB を使用してプリエンプティブスケジューリングを実装できます。
SchedulerX for XXL-JOB コンソール にログインします。管理するインスタンスを見つけ、その ID をクリックします。[アプリケーション管理] ページで、管理するアプリケーションを見つけ、[操作] 列の [編集] をクリックします。表示されるパネルの [詳細設定] セクションで、[フロー制御] をオンにし、[タスク実行キューサイズ] パラメーターを構成します。

この例では、[タスク実行キューサイズ] パラメーターが 10 に設定されています。これは、最大 10 個のジョブを同時に実行でき、超過したジョブは待機キューに追加されることを指定します。
ジョブを作成し、各ジョブの優先順位を指定します。優先順位の高いジョブは、優先順位の低いジョブをプリエンプトし、最初にスケジュールされます。つまり、優先順位の高いジョブは、待機キューで優先順位の低いジョブの前に配置されます。