我正在使用隔离的天蓝色函数从队列接收消息。我需要验证收到的消息,如果无效,则将其发送到死信队列。我发现唯一的方法是抛出异常,重试 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
}
}
如果您正在使用进程内工作程序,则可以通过绑定到死信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.
不幸的是,这在隔离进程模型中尚不可用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)