2017-04-19 17 views
-1

私は青空のサービスバスの初心者です。キューに送信されたメッセージは時間とともに生きていきます。メッセージが期限切れになったら私はそれを受け取り、いくつかの方法を呼びたいと思います。どうやってやるの?メッセージの有効期限が切れた後のサービスバス

+0

http://pmichaels.net/2017/07/02/azure-service-bus-send-e-mail-message-timeout/ –

答えて

1

有効期限が切れているメッセージのデッドレターを可能にするオプションがあります。

QueueDescription.EnableDeadLetteringOnMessageExpirationプロパティ

メッセージの有効期限が切れたとき、このキューが死んで文字をサポートしているかどうかを示す値を取得または設定します。

これにより、キューのDLQにメッセージが送信されます。しかし、それは別の理由(例えば、配信数が最大数を超えるなど)でメッセージが死んでいる場合、そのメッセージもDLQに表示されることを意味します。幸いにも、理由プロパティ/ヘッダ(DeadLetterReason)があります。 TTLの有効期限のためにDLQに移動されたメッセージの場合、value will be TTLExpiredException

0

メッセージが期限切れになったときに受信して、いくつかの方法を呼び出す必要があります。どうやってやるの?。

私が知っているように、デッド・レター・メッセージを受け取るために、通常のキューと同じようにキュー・レシーバーを構成することができます。 「myqueue」という名前のキューがある場合、DLQパスはmyqueue/$DeadLetterQueueのようになります。ここで

がDLQからメッセージを受信するためにC#で書かれたサンプルコードです:詳細については

var deadletterReceiver = await receiverFactory.CreateMessageReceiverAsync(
    QueueClient.FormatDeadLetterPath(queueName), ReceiveMode.PeekLock); 
while (true) 
{ 
    var msg = await deadletterReceiver.ReceiveAsync(TimeSpan.Zero); 
    if (msg != null) 
    { 
     foreach (var prop in msg.Properties) 
     { 
      Console.WriteLine("{0}={1}", prop.Key, prop.Value); 
     } 
     await msg.CompleteAsync(); 
    } 
    else 
    { 
     break; 
    } 
} 

、あなたがDeadletterQueueを参照することができます。また、get-started-with-queuesについての公式チュートリアルに続き、開発言語を選択することもできます。

関連する問題