AI-200:Developing AI Cloud Solutions on Azure Azure サービスへの接続と利用 問2
Azure サービスへの接続と利用/イベント/メッセージ ベースの AI ソリューションの開発(Service Bus・Event Grid)Azure Service Bus キューからピーク ロック(PeekLock)でメッセージを受信して処理するワーカーで、形式が壊れたメッセージが例外を起こし、処理に何度も失敗しています。こうしたメッセージは最終的にどうなり、どう扱うのが適切ですか。
当サイトのオリジナル問題(AI-200:Developing AI Cloud Solutions on Azureの出題範囲「Azure サービスへの接続と利用」に対応。実際の試験問題ではありません)
- A処理に失敗した時点で自動的に削除されるため、送信側に再送の仕組みを用意しておく
- B配信回数が最大配信数(既定は10)を超えるとデッドレター キューに移されるので、デッドレター サブキューから受信して理由を確認し、修正してから再送する
- Cデッドレター キューのメッセージは有効期限が来ると自動で削除されるため、そのまま放置してよい
- Dキューの最大配信数を0に設定すると、失敗したメッセージがデッドレター キューに移されなくなる
正解:B
解説
ピーク ロックで受信したメッセージは、処理を放棄したりロックの期限が切れたりするたびに、配信回数が増えます。配信回数が最大配信数(既定は10)を超えると、そのメッセージは理由 MaxDeliveryCountExceeded とともにデッドレター キュー(DLQ)に移されます。DLQ はキューごとに自動で用意されるサブキューで、メッセージは自動では削除されません。DLQ から受信し、理由(DeadLetterReason)を確認して原因を直してから再送します。
選択肢ごとの解説
- A誤り。処理に失敗したメッセージは、すぐには削除されません。再配信されたあと、最大配信数を超えるとデッドレター キューに移されます。
- B正しい。DLQ から受信して理由を確認し、問題を直してから再送するのが基本的な扱い方です。
- C誤り。デッドレター キューでは有効期限は適用されず、自動で削除されることもありません。明示的に受信して完了させるまで残ります。
- D誤り。最大配信数を超えたメッセージを DLQ に移す動作は、無効にできません。最大配信数を大きな値にすることはできますが、それで問題が解決するわけでもありません。