或者该行为仅在函数出错时才可用。
这是针对队列触发的功能。
答案 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次重试并计数!