如何从服务总线触发的 Python Azure 函数将消息添加回队列而不引发异常?

问题描述 投票:0回答:1

我希望我的服务总线触发 Python Azure 函数,使其从队列中检索到的消息再次在队列上可用以进行重试。我希望这种情况发生而不必在函数中引发异常。但是根据文档

在非C#函数中,函数中的异常会导致运行时在后台调用abandonAsync。如果没有发生异常,则在后台调用completeAsync。

如果函数成功返回,将调用completeAsync。

我知道服务总线接收器有一个功能,允许您放弃消息,以便它再次在队列中可用。但我不认为这在 Azure 函数已经为您检索到消息的情况下有效。

此外,在 Azure 函数中接收的 ServiceBusMessage 对象似乎没有让您“放弃”或以其他方式将消息返回到队列的方法。

网上有关此问题的大多数其他问题似乎都是 C# 特有的,因此我没有太多尝试寻找答案。

我的 Azure 函数正在调用第三方 API,不幸的是,该 API 很容易出现错误,这是我无法控制的。但是,在查看错误报告时,我不希望此 Azure 函数始终位于失败函数列表的顶部。当此 API 调用失败时,在我的函数中引发异常似乎有些过分,因为这不是意外结果。我想返回该函数成功,因为从我的角度来看该函数没有任何问题,但队列上的消息需要再次尝试。

python azure azure-functions azureservicebus azure-servicebus-queues
1个回答
0
投票

简短的版本是 - 目前 Python 语言工作者无法完成此操作。

目前,只有 .NET 函数工作线程(进程内和隔离)能够绑定到显式完成消息所需的

ServiceBusMessageActions
参数。其他语言工作人员完成消息的唯一方法是处理成功或失败足够多次,以致超出传递计数或触发其他服务端 DLQ 操作之一,并且消息成为死信.

计划将消息操作功能带给其他语言工作者,但据我所知,尚未共享时间表。

© www.soinside.com 2019 - 2024. All rights reserved.