如何在失败后延迟执行Azure功能?

Esp*_*spo 7 azure azure-functions

我正在使用Azure函数(用C#编写),当存储队列中有新消息时会触发该函数.该函数调用外部Web服务来处理消息,当外部服务响应时,一切正常.

问题是当外部网站关闭时,Web客户端发出异常(没有围绕它的try/catch块).然后发生的是该功能被重试(通过天蓝色)5次,每次尝试之间不到一秒.正如您可以想象的那样,Web服务可能仍会在所有5次尝试中失败,这将使azure将消息移动到"毒药" - 队列.

是否可以配置它在重试之前等待的时间,或者我是否需要设置另一个每分钟运行一次的azure函数来检查毒性队列中是否需要在正常队列中重新创建消息?

evi*_*obu 0

该函数正在调用外部 Web 服务来处理消息,当外部服务响应时,一切正常。

为什么不使用队列消息来指示服务状态。

Function is triggered
        \  /
         \/
Do we have a message in service-status queue?
        \  /
         \/    
Wait 30 seconds before making web-service call / else call it right away.
        \  /
         \/
Can't reach web-service? -> Drop message in service-status queue.
Run Code Online (Sandbox Code Playgroud)

如果您有该函数应用程序的多个实例,则需要使用存储上的持久文件或表存储中的条目发出信号。