Apex Flex キューを使用した一括処理ジョブ送信数の増加 (正式リリース)

最大 100 件の一括処理ジョブを同時に送信し、キュー内にあるジョブの順序を有効に管理してどの一括処理ジョブを最初に処理するかを制御できます。この機能強化によって、一括処理ジョブをより柔軟に管理できます。
メモ

メモ

Spring '15 で作成されるすべての新しい組織で、Apex Flex キューはデフォルトで有効になっています。既存の組織で Apex Flex キューを有効化するには、[設定] で Apex Flex キューの重要な更新を有効化します。

この更新によって一括処理ジョブの送信方法が変更されることはありませんが、以前よりも多くの一括処理ジョブを送信できるようになります。この更新は、キューに追加された後に一括処理ジョブを処理する既存の動作には影響を与えません。一括処理ジョブに Holding 状況が追加されるため、AsyncApexJob に対するクエリに影響する可能性があります。

重要な更新についての詳細は、Salesforce ヘルプの「重要な更新の概要」を参照してください。

以前は、同時に送信できる一括処理ジョブは最大 5 個のみでした。Apex Flex キューを使用すると、さらに最大 100 件の実行用の一括処理ジョブを送信できます。実行のために送信されるジョブは保留状況になり、Apex Flex キューに置かれます。最大 100 個の一括処理ジョブを保留状況にできます。システムリソースが使用可能になったら、システムが Apex Flex キューの先頭からジョブを取り出し、一括処理ジョブキューに移動します。システムは最大 5 件のキュー内のジョブまたは有効なジョブを同時に処理できます。移動したこれらのジョブの状況は、Holding から Queued に変わります。キュー内にあるジョブは、システムが新しいジョブを処理できる状態になると実行されます。

システム管理者は、Apex Flex キューに保留されているジョブの順序を変更して、いつシステムに処理されるかを制御できます。たとえば、システム管理者は一括処理ジョブを保留キューの先頭位置まで移動して、システムが Flex キューから次の保留ジョブを取得するときに最初に処理されるようにすることができます。ジョブは、システム管理者の介入なしに、送信された順序 (先入れ先出し) で処理されます。保留されている一括処理ジョブを監視し、並び替えるには、Salesforce ユーザインターフェースで [設定] から [ジョブ] | [Apex Flex キュー] をクリックします。

Database.executeBatch コールによるジョブの送信

Database.executeBatch をコールして一括処理ジョブを送信すると、システムは一括処理ジョブを Holding 状況にしてからジョブを処理します。

Database.executeBatch の結果は次のようになります。
  • 一括処理ジョブは Apex Flex キューに置かれ、その状況は Holding に設定されます。
  • Apex Flex キューが最大ジョブ数の 100 に達した場合、Database.executeBatchLimitException を発生させて、ジョブをキューに追加しません。

システムリソースが使用可能になったら、システムが Flex キューの先頭から次のジョブを処理するために取り出し、その状況を Queued に変更します。

AsyncApexJob の新しい状況項目値

一括処理ジョブを表す AsyncApexJob オブジェクトには、Status 項目値 Holding が新しく追加されました。これは、ジョブが Flex キュー内に置かれ、システムリソースが空いて処理されるのを待っていることを示します。