如何通过服务总线队列触发功能将服务总线队列消息移至死信
答案 0 :(得分:1)
https://github.com/Azure/azure-webjobs-sdk/issues/1986#issuecomment-433960534
在v3中,您可以绑定到MessageReceiver类,该类公开了DeadLetter,Abaondon,Complete等方法。示例:
<a id = "anchor-{{my_post.id}}"> anchor-{{my_post.id}} </a>
在此示例中,消息被绑定为字符串,而各种消息属性(包括lockToken)被绑定为params。您还可以将消息绑定为消息类型,然后从那里访问必需的消息属性。在v2中,ServiceBus SDK直接在BrokeredMessage类本身上公开了这些消息方法,但是在其SDK的最新版本中,这些方法不再存在,这意味着您必须绑定到MessageReceiver才能访问它们。
答案 1 :(得分:0)
我还没有尝试过,但是您可以做的是将队列上的MaxDeliveryCount
属性设置为1
,然后在触发后立即在函数中引发异常。这样,邮件的传递计数将增加1,并且Service Bus将自动对邮件进行死信处理。
答案 2 :(得分:0)
通过在Azure门户中创建Azure函数触发器来读取死信队列消息。在“函数”中,将DLQ的名称提供为“ QueueName / $ DeadLetterQueue”,如下图所示
注意:如果您要访问主题中未发送的消息,则读取死信队列的语法为“ TopicName / Subscriptions / SubscriptionName / $ DeadLetterQueue”。
现在,定义应该使用DLQ消息执行的操作。在这里,如下面的屏幕快照所示,我们正在使用Azure Service Bus将“ myqueue”的DLQ消息发送到名为“ queue”的主题
通过这种方式,我们可以使用Azure函数非常轻松地根据需要处理DLQ消息。