如果Azure功能超时,是否将触发器消息放回Azure队列?

时间:2017-07-24 17:31:02

标签: azure azure-functions azure-queues

或者该行为仅在函数出错时才可用。

这是针对队列触发的功能。

3 个答案:

答案 0 :(得分:1)

如果函数完成且没有任何错误,该函数将自动将消息标记为已完成,并将其从队列中删除。

否则,消息将重新放回队列。这将使其可见再次处理。但是,请记住,每次处理邮件时,DeliveryCount都会递增。如果DeliveryCount超过队列MaxDeliveryCount,则消息将移至Dead Message子队列。

答案 1 :(得分:1)

正如Mikhail所说,Function会自动重试5次处理消息。如果在5次重试后失败,它将自动移至毒性队列<queuename>-poison

以下两篇相关帖子对如何排队消息和处理

有了更多了解

以下是handling poison queue messages的一些文档。

希望这能为你澄清事情。

答案 2 :(得分:0)

根据我的测试,是的,如果azure函数超时,则消息将无限期地返回到队列。

这是我的消息信息在提交后8小时:

插入时间 2018年7月9日星期一16:04:33 GMT

预计时间 2018年7月16日星期一16:04:33 GMT

出队数 29

此MSDN页面https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-error-pages说:“具有重试支持的两个触发器是Azure队列存储和Azure Blob存储。默认情况下,这些触发器最多重试五次。在第五次重试之后,两个触发器都写一个消息发送到特殊的毒物队列。”

在函数超时的情况下,此错误行为不成立;我的消息是29次重试并计数!