私たちは、リクエストを個別に処理し、任意の外部 Web サービスに対して順番に処理するアウトバウンド メッセージ キュー システムを作成したいと考えていました。これらのリクエストを処理する頻度は可変ですが、例として、プロセスを 30 秒ごとに実行したい場合があります。
1 時間に 30 秒ごとに同じジョブを 120 回スケジュールすることは不可能であり、現実的ではありません。
私が最終的に落ち着いたアプローチは、頂点をスケジュールする(スケジュールされた時間まで待機し、将来のメソッドを呼び出し、それ自体を削除(中止)する)->将来の呼び出し(リクエストがある場合は処理し、クラスを再スケジュールして30秒で再実行する)を連鎖することでした。 apex (future メソッドを 30 秒以内に呼び出し、それ自体を中止) -> future 呼び出し (リクエストの処理と再スケジュール) などを無期限に繰り返します。最終結果は、現在 2 週間本番環境で実行されていますが、再スケジュールに失敗しただけで、その理由がわかりません。
何が起こっているのかは、ある種のガバナー制限に違反していると思いますが、その方法がわかりません。サンドボックスで同様の問題が頻繁に発生しており、将来のリクエストの制限を超えたことを示す制限例外を受け取りました。
サービスが失敗した時点から、過去 24 時間のすべての非同期ジョブ (将来だけでなく) を照会したところ、2200 だけが返されました。ジョブは future メソッドを呼び出した後、自分自身を中止します)。
それでも、Salesforce は、24 時間ごとに 250,000 回の非同期 Apex 実行が許可されていると述べているため、何が起こっているのかわかりません。この方法でスケジュールされたジョブをチェーンしようとした経験のある人はいますか? これを達成するためのより良い方法はありますか?私が認識していない制限はありますか、それとも非同期実行を間違った方法で測定していますか?
ヘルプやアドバイスをいただければ幸いです。