表とキューが関連するすべてのトランザクションを持っていないのAzureでこのようなシナリオを処理する必要があります。
ここではいくつかの一般的なキューの使用状況ガイダンスです:確かキューアクションが冪等ていることを保証します
- - つまり、あなたは同じ結果が再現性副作用
で、複数回キューメッセージを実行していると思います
- reasonalbeキューメッセージの可視性のタイムアウトを設定します。タスクに時間がかかるように見える場合は、メッセージの不可視タイムアウトを延長することができます。これにより、他のスレッド/ロールインスタンスは、まだ作業中に同じキューアイテムを取得することができなくなります。
- 長時間実行するタスク(または可能であればリソースを何回も消費するのを避けたい場合)には、途中でキューメッセージを変更して、ステータスヒントを与えてください。たとえば、レンダリングビデオキューメッセージ:
'RENDER|Source-URL'
があります。あなたはビデオをレンダリングしており、2回のパスが必要です。一時的なブロブに結果を保存してパス1を完了しました。あなたは'RENDER|Source-URL|Pass1-URL'
のようなものでメッセージを修正することができます。今、何かがうまくいかず、何らかの理由でレンダリングタスクが失敗したとします。後でこのメッセージを再度受け取ると、最初からではなく、パス2から始めることができます。
- メッセージをキューに戻すことを心配する必要はありません。メッセージは、明示的に削除するまでキューから実際に削除されません。選択した不可視タイムアウト期間中は、は表示されなくなります()。その期間の終わりまでに削除しない(または期間を延長する)と、他の誰かが読むことができるようになります。 注:この時点で、誰かがキューメッセージを読むと、元のメッセージ保持者はそのメッセージを削除できなくなります。