如何将消息重定向到死信队列Azure服务总线

oipij1gg  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(88)

我正在使用隔离的azure函数从队列中接收消息。我需要验证收到的消息,如果无效,就把它发送到死信队列。我发现的唯一方法是抛出异常,在10次重试后,消息将被移动到死信队列。当然,这不是一个好的解决方案。也许有人面临着同样的任务。谢谢你,谢谢

[Function("Example")]
 public async Task ExampleAsync([ServiceBusTrigger("example", Connection = "ServiceBusConnection")] string entityId)
 {
     if (!int.TryParse(entityId, out var id))
     {
         // TODO: Move to dead-letter queue
     }
 }

字符串

rkue9o1l

rkue9o1l1#

如果使用进程内worker,可以通过在函数中绑定到ServiceBusMessageActions,然后调用其DeadLetterMessageAsync方法来实现死信。这还需要绑定到ServiceBusMessage,而不仅仅是string entityId
举例来说:

[FunctionName("BindingToMessageActions")]
public static async Task Run(
    [ServiceBusTrigger("<queue_name>", Connection = "<connection_name>")]
    ServiceBusReceivedMessage message,
    ServiceBusMessageActions messageActions)
{
    if (!int.TryParse(message.Body.ToString()), out var id))
    {
        await messageActions.DeadLetterMessageAsync(message);
    }
}

字符串
更多的例子可以在README包中找到。
不幸的是,这在隔离流程模型中还不可用。

相关问题