如何在服务总线队列触发功能中将服务总线消息移动到死信

jaa*_*aas 6 function servicebus azure dead-letter queuetrigger

我们如何通过服务总线队列触发函数将服务总线队列消息移动到死信中

Ale*_*AIT 7

https://github.com/Azure/azure-webjobs-sdk/issues/1986#issuecomment-433960534

在 v3 中,您可以绑定到 MessageReceiver 类,该类公开了 DeadLetter、Abaondon、Complete 等方法。示例:

public static async Task ProcessMessage(
    [ServiceBusTrigger("myqueue")] string message, int deliveryCount,
    MessageReceiver messageReceiver,
    string lockToken)
{
    . . .
    await messageReceiver.DeadLetterAsync(lockToken);
    . . .
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,消息被绑定为一个字符串,包括 lockToken 在内的各种消息属性被绑定为参数。您还可以将消息绑定为消息类型并从那里访问必要的消息属性。在 v2 中,ServiceBus SDK 直接在 BrokeredMessage 类本身上公开了这些消息方法,但在其 SDK 的最新版本中,这些方法不再存在,这意味着您必须绑定到 MessageReceiver 才能访问它们。


Gau*_*tri 1

我还没有尝试过,但您可以做的是将MaxDeliveryCount队列上的属性设置为1,然后在函数触发时立即抛出异常。这样,消息的传递计数将增加 1,并且服务总线将自动将消息设为死信。