当前位置: 首页 > 知识库问答 >
问题:

Azure服务总线死信队列

邬英武
2023-03-14

我正在使用azure服务总线主题和订阅机制,并希望处理所有在死信队列中的消息。

此外,我想通过C#中的Azure Web作业处理消息,并将其发送回队列。所以我想知道如何通过我的应用程序处理死信队列上的消息?

共有3个答案

景明诚
2023-03-14

当消息来自服务总线实体(队列或主题订阅)时,它将被移动到同一实体的死信路径。死字的原因将在消息的自定义属性DeadLetterReason和DeadLetterErrordescription ption中提供。

为了接收死信信息,

string path = Microsoft.ServiceBus.Messaging.SubscriptionClient.FormatDeadLetterPath(topicPath, subscriptionName);    
var subscriptionClient = SubscriptionClient.CreateFromConnectionString(connectionString, path);  
BrokeredMessage message = subscriptionClient.Receive();
窦弘义
2023-03-14

此外,我想通过C#中的Azure Web作业处理消息,并将其发送回队列。

正如spodger指出的,您的死信订阅的路径将是:

{topic-path}/Subscriptions/{subcription-name}/$DeadLetterQueue

您可以使用WebJobs SDK for Service Bus并利用ServiceBusTrigger访问死信队列消息,如下所示:

public void ProcessDeadletterQueue(
    [ServiceBusTrigger("topicName", "subscriptionName/$DeadLetterQueue")] BrokeredMessage message)
{
    //TODO:
}

有关更多详细信息,请参阅此处。

佟嘉祯
2023-03-14

当一条消息是死信时,它进入从中读取它的订阅的死信队列。您只需将订阅名添加到您喜欢的订阅队列中即可。

 类似资料:
  • 使用WebJobs SDK时,将代理消息移动到死信队列的正确方法是什么?通常我会打电话给味精。死信()。但是,SDK负责管理代理消息的生命周期。它将调用msg。如果方法返回成功,则返回Complete(),如果发生异常,则将重试该消息。我需要第三种情况,告诉ServiceBus队列将消息移动到死信队列,因为它是一条坏消息。

  • > 在Azure Service Bus主题中,我有两个订阅subscription1和subscription2。我正在向主题发送一条消息。在subscription1中,消息被放弃,在subscription2中,消息被处理。subscription1中的已放弃消息是否将再次发送给两个订阅或仅发送给已放弃消息的订阅。 我也有点困惑,死信队列将是所有订阅都通用的,还是每个订阅都有一个单独的死信队

  • 我在Azure中创建了一个服务总线队列,它运行良好。如果消息没有在默认尝试(10次)内传递,则将消息正确地移动到死信队列。 现在,我想从死信队列中重新提交这条消息,回到它起源的队列,看看它是否再次工作。我也尝试过使用服务总线浏览器。但它立即被转移到死信队列中。 是否有可能这样做,如果有,如何做?

  • 我有一个服务总线Q,从Azure门户可以或多或少地看到服务总线Q包含多少条目。如何使用他们的管理API获取此计数?我仔细阅读了文档,但没有找到答案。

  • 如何获取Azure服务总线队列中死信消息的数量? 我可以像这样得到队列中的计数。。。 但这看起来既包括队列中的消息,也包括关联死信队列中的消息 我如何区分它们?

  • 我正在尝试Azure服务总线队列。我有以下代码: 队列发送: 接收代码: 我看到,每当我打电话放弃时,信息都被写上了死信。我的假设是它应该被激活,并且可以被另一个客户接收。