2012-02-07 10 views
3

azureテーブルストレージを使用して、同じパーティション内のエンティティグループトランザクションについて読みました。 Azure Queueをテーブルストレージと一緒に使用するとどうなりますか?キューからメッセージを処理し、テーブルストレージに挿入することは可能ですか?何かが壊れた場合は、ロールバックしてメッセージを再びキューに入れますか?Azureキューとテーブルストレージトランザクションのベストプラクティス

またはどのように私は

答えて

6

表とキューが関連するすべてのトランザクションを持っていないのAzureでこのようなシナリオを処理する必要があります。

ここではいくつかの一般的なキューの使用状況ガイダンスです:確かキューアクションが冪等ていることを保証します

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