2017-09-27 12 views
1

正常に動作しているサービスバスからメッセージを取得するWebJobがあります。 webjobが終了しなかったり、例外をスローしたりすると、メッセージは待ち行列に戻され、それ自体は問題ありません。Azure WebJob Service Busエラー時にキューのinfrontメッセージ

私はMaxDequeueCountを10に設定しましたが、それが再度処理しようとすると失敗する場合は問題ありません。しかし問題は、最初に失敗したメッセージに戻る前に、メッセージがキューの一番下に送信され、他のメッセージが処理されるようになっていることです。

同じエンティティに対して複数の更新が連続して発生する可能性があるため、一度に1つのメッセージを処理したいとします。順序が変更された場合、間違った順序でエンティティが更新されます。

MaxDequeueCountに達するまで、メッセージがエラーのときにキューのinfrontに戻ったり、同じメッセージで作業を続けることは可能ですか?

答えて

0

理想的には、メッセージの順序に頼るべきではありません。

AzureサービスバスSessionsのFIFOセマンティクスを使用することができます。セッション内でメッセージが処理され、メッセージがで終了した場合は、が中止され、キューの最後に行くのではなく、もう一度処理されます。あなたは、次の点に注意してくださいする必要があります。

  1. は一度に
  2. を一つのメッセージを処理することができ、メッセージが中止されていないが完了していない場合は、それを放置されます
  3. を使用するためにセッションが必要ですセッションが再開されたときに取得されます。
関連する問題