Azure服务总线死信队列

6
我正在使用Azure服务总线主题和订阅机制,并希望处理所有在死信队列中的消息。此外,我想通过C#中的Azure Web Job处理消息并将它们发送回队列。因此,我想知道如何通过我的应用程序处理死信队列中的消息?
3个回答

14

当消息死信化时,它将进入读取该消息的订阅的死信队列。您可以像访问原始订阅一样访问它,只需将 /$DeadLetterQueue 添加到订阅名称即可。


6
此外,我希望使用C#通过Azure Web Job处理消息并将其发送回队列。正如Spodger指出的那样,您的死信订阅路径应为:
{topic-path}/Subscriptions/{subcription-name}/$DeadLetterQueue

您可以使用WebJobs SDK来处理Service Bus,并利用ServiceBusTrigger访问您的死信队列消息,步骤如下:
public void ProcessDeadletterQueue(
    [ServiceBusTrigger("topicName", "subscriptionName/$DeadLetterQueue")] BrokeredMessage message)
{
    //TODO:
}

了解更多详情,请参考此处


0
当从服务总线实体(队列或主题订阅)中死信消息时,它将被移动到同一实体的死信路径。死信原因将在消息的自定义属性DeadLetterReasonDeadLetterErrorDescription中提供。
为了接收死信消息,
string path = Microsoft.ServiceBus.Messaging.SubscriptionClient.FormatDeadLetterPath(topicPath, subscriptionName);    
var subscriptionClient = SubscriptionClient.CreateFromConnectionString(connectionString, path);  
BrokeredMessage message = subscriptionClient.Receive();

1
我在最新的(4.1.1) _Microsoft.Azure.ServiceBus_客户端库中找不到FormatDeadLetterPath - Anton Kalcik
1
Microsoft.Azure.ServiceBus 客户端库中,您需要使用 EntityNameHelper 而不是 SubscriptionClient - Anton Kalcik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接