3

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

または、Azureでこのようなシナリオをどのように処理する必要がありますか

4

1 に答える 1

6

テーブルとキューには、関連付けられたトランザクションはありません。

一般的なキューの使用方法のガイダンスを次に示します。

  • キュー アクションが冪等であることを確認してください。つまり、キュー メッセージを複数回実行しても同じ結果が得られ、副作用が繰り返される可能性があります。
  • reasonalbe キュー メッセージの可視性タイムアウトを設定します。タスクに時間がかかりそうな場合は、メッセージの非表示タイムアウトを延長できます。これにより、作業中に他のスレッド/ロール インスタンスが同じキュー アイテムを取得するのを防ぐことができます。
  • 長時間実行されるタスク (または、可能であればリソースを複数回消費することを避けたいタスク) の場合は、途中でキュー メッセージを変更し、自分自身にステータス ヒントを与えます。例: render-video キュー メッセージがあります: 'RENDER|Source-URL'. ビデオをレンダリングしており、2 つのパスが必要です。パス 1 が完了し、結果が一時的な BLOB に格納されました。のようなものでメッセージを変更できます'RENDER|Source-URL|Pass1-URL'。ここで、何か問題が発生し、レンダリング タスクが何らかの理由で失敗したとします。後でこのメッセージを再度取得すると、最初からではなく、パス 2 から開始できます。
  • メッセージをキューに戻すことについて心配する必要はありません。メッセージは、明示的に削除するまで実際にはキューから削除されません。選択した非表示タイムアウト期間中は、単に非表示になります。その期間の終わりまでに削除しない (または期間を延長しない) 場合、メッセージは再び表示され、他のユーザーが読むことができます。注:この時点で、他の誰かがキュー メッセージを読むと、元のメッセージ所有者はメッセージを削除できなくなります。
于 2012-02-07T10:31:21.510 に答える