ここでは WEBJOBS_SHUTDOWN_FILE を使用し、ここではキャンセル トークンを使用して正常なシャットダウンについて読んだので、正常なシャットダウンの前提を理解していますが、キュー メッセージの処理中にある Web ジョブにどのように影響するかはわかりません。
シナリオは次のとおりです。
- キューをリッスンする機能を備えた Web ジョブがあります。
- メッセージがキューに追加され、ジョブが処理を開始します。
- 処理中に誰かが開発をプッシュし、再デプロイをトリガーします。
git プッシュでデプロイするために Web ジョブを接続していると仮定すると、このデプロイは Web ジョブの更新もトリガーし、(私が理解している限りでは) ジョブで何らかのシャットダウン ワークフローを開始します。そこで、いくつか質問があります。
- キュー メッセージの処理中のジョブは、ジョブが終了する前にメッセージの処理を終了しますか? または、シャットダウン通知は本質的に「この雌犬はシャットダウンしようとしています。それを処理するものが何もない場合、あなたはSOLです。」
- 私たちが SOL である場合、基本的にシャットダウンを処理するための最良のオプションは、実行していることを DB トランザクションと同等にラップし、シャットダウン時にすべての変更がロールバックされるようにシャットダウン ハンドラーを実装することですか?
- キュー メッセージの処理中に Web ジョブがシャットダウンした場合、そのメッセージは再度キューに入れられますか? そうでない場合、シャットダウン ハンドラがそのメッセージの再キューイングを処理する必要があるということですか?
- ジョブをシャットダウンする必要があることが通知された後、キューをリッスンしている関数がそれ以上のキュー メッセージを取得することは可能ですか?
ここでのガイダンスは大歓迎です!また、私が言及したもの以外に、ジョブのシャットダウンを処理する方法に関する他の有用なリンクがあれば、それらを共有していただければ幸いです。