本日、ある顧客で前週のログを分析したところ、Windows Azure サービス バス キューに関する次の問題が見つかりました。
エンティティが調整されているため、要求は終了しました。10 秒待ってから、もう一度お試しください。
コードを検証した後、Transient Fault Handing Application Block (TOPAZ) を使用して、次のような再試行ポリシーを実装するように伝えました。
var retryStrategy = new Incremental(5, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2));
var retryPolicy = new RetryPolicy<ServiceBusTransientErrorDetectionStrategy>(retryStrategy);
お客様は次のように答えました。
「ああ、それは素晴らしい。それで、スロットリング時に 10 秒間待機する必要があるという事実も処理されます。」
考えてみれば、これが事実であるかどうかを確認したことはありません。私はいつもこれが事実だと思っていました。Microsoft.Practices.EnterpriseLibrary.WindowsAzure.TransientFaultHandlingアセンブリで、スロットリングの場合に 10 秒間待機するコードを探しましたが、何も見つかりませんでした。
これは、回復力のあるアプリケーションを作成するには TOPAZ では不十分ということですか? スロットリングを処理するために、これを何らかのカスタム コードと組み合わせる必要がありますか (つまり、特定の例外が発生した場合は 10 秒待機します)。