【发布时间】:2017-12-30 09:31:48
【问题描述】:
或者该行为仅在函数出错时可用。
这是一个队列触发的函数。
【问题讨论】:
-
你为什么不试试呢?应该是一个非常简单的场景来生成
标签: azure azure-functions azure-queues
或者该行为仅在函数出错时可用。
这是一个队列触发的函数。
【问题讨论】:
标签: azure azure-functions azure-queues
从我的测试来看,是的,如果 azure 函数超时,消息会无限期地返回到队列中。
这是我提交 8 小时后的消息信息:
插入时间 格林威治标准时间 2018 年 7 月 9 日星期一 16:04:33
到期时间 格林威治标准时间 2018 年 7 月 16 日星期一 16:04:33
出队计数 29
此 MSDN 页面 https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-error-pages 说“支持重试的两个触发器是 Azure 队列存储和 Azure Blob 存储。默认情况下,这些触发器最多重试五次。第五次重试后,两个触发器都会向一个特殊的毒药队列。”
在函数超时的情况下,此错误行为不成立;我的消息是 29 次重试和计数!
【讨论】:
正如 Mikhail 所说,函数会自动重试处理消息 5 次。如果重试 5 次后失败,它将自动移至中毒队列<queuename>-poison。
以下是两个相关的帖子,对队列消息和处理方式进行了更多说明
这是handling poison queue messages 的一些文档。
希望这可以为您澄清事情。
【讨论】:
如果函数完成没有任何错误,该函数会自动将消息标记为已完成,并将其从队列中删除。
否则,消息将被放回队列中。这将使它再次被处理可见。但是,请记住,每次处理消息时,DeliveryCount 都会递增。如果DeliveryCount 超过队列的MaxDeliveryCount,则消息将移动到死消息子队列。
【讨论】:
dequeueCount,最大值固定为5,消息移动到<queeuename>-poison队列