Azure操作、特にテーブルストレージに対するべき等操作を設計するパターンを知っている人はいますか? より一般的なアプローチは、id 操作を生成し、それをキャッシュして新しい実行を検証することですが、操作を処理するワーカーが多数ある場合、このアプローチはより複雑になります。:-))
ありがとう
Azure操作、特にテーブルストレージに対するべき等操作を設計するパターンを知っている人はいますか? より一般的なアプローチは、id 操作を生成し、それをキャッシュして新しい実行を検証することですが、操作を処理するワーカーが多数ある場合、このアプローチはより複雑になります。:-))
ありがとう
わかりましたので、 nightpfhorとcodingoutloudから要求されたように、例を提供していません。とはいえ、べき等操作に対処するための非常に一般的な方法の 1 つは、必要なアクションを Windows Azure キューにプッシュすることです。次に、worker ロール インスタンスの数に関係なく、一度に 1 つのインスタンスのみが特定のキュー アイテムで動作します。キュー メッセージがキューから読み取られると、指定した時間の間非表示になります。
現在: そのメッセージの処理中にいくつかのことが発生する可能性があります。
それは並行性を扱います。べき等性については、副作用なしで操作を繰り返すことができるかどうかはあなた次第です。たとえば、誰かの週給を計算し、印刷ジョブをキューに入れ、週給を Table 行に格納します。何らかの理由でエラーが発生し、メッセージを削除しないか、メッセージを削除する前にコードが中止されます。
時間を早送りすると、別のワーカー インスタンス (または同じインスタンス) がこのメッセージを再読み取りします。この時点で、理論的には、必要なアクションを簡単に再実行できるはずです。あなたのケースでこれが実際に不可能な場合、べき等操作はありません。ただし、これを回避するために自由に使用できるメカニズムがいくつかあります。
それが役立つことを願っています。あなたが達成しようとしていることについて詳しく知らずに、ここで暗闇の中で撮影するようなものです.
編集: 冪等性とテーブル ストレージの間の接続が表示されないことに言及する必要があると思います。Table Storage、SQL Azure、またはその他のストレージ コンテナーを使用するかどうかにかかわらず、冪等性に対処する必要があるため、これは同時実行の問題だと思います。
この問題を解決するには、返信ログの保存方法を使用できると思います