3

Azure サービス バス キューをリッスンするサービスがあります。このキューの配信不能キューをリッスンする別のサービスがあります。また、デプロイされた Azure アプリケーションに対して実行される一連のテストもあります。

自動化されたテストを拡張して、デッド レターを処理する部分もテストされるようにしたいと考えていますが、メッセージがデッド レター キューに到達することを保証するテストをどのように記述できるかわかりません。デッドレター。

現在、これを手動でテストしていますが、これは長期的なオプションではないように感じます。

何か案は?

4

2 に答える 2

5

Service Bus docsによると、 true に設定EnableDeadLetteringOnMessageExpirationすると、メッセージの有効期限が切れた場合、デッド レター キューに送られます。したがって、次のことができます。

var desc = new QueueDescription(QueueName);
desc.EnableDeadLetteringOnMessageExpiration = true;
desc.DefaultMessageTimeToLive = TimeSpan.FromSeconds(1); // one second is the min value

メッセージが配信不能キューに送られることを確認するために、1 秒以上待機するだけでテストできます。

編集: を実行して、受信したメッセージをデッド レターにすることもできますreceivedMessage.DeadLetter()。これにより、デッド レター キューに自動的に配置されます。

于 2013-04-24T22:03:23.323 に答える
5

Service Bus API では、Microsoft は、メッセージをメイン キューに入れずにすぐにデッド レター キューにメッセージを送信する機能を提供していません。デッド レター キューへのパスを使用してMessageSenderを作成しようとすると、例外が発生して失敗します。

メッセージを配信不能キューに転送するBrokeredMessage.DeadLetter()メソッドを呼び出す偽の実装を使用して、メイン キュー レシーバーをモック アウトする必要があります。

于 2013-04-25T12:02:31.203 に答える