时间触发的 Azure 函数和队列处理

Time triggered Azure Function and queue processing

我有一个每天调用一次的函数来处理队列中的所有消息。但我也希望像队列触发器一样具有重试和毒消息逻辑。这有可能吗?

所以那时你的功能纯粹是一个定时器触发的功能,从那里你与控制台应用程序没有什么不同,你必须如何处理来自你自己的客户端连接,消息循环的队列消息,重试和死信(毒)逻辑。老实说,这不是完成这项工作的正确工具。

假设的一种方法您可以考虑是否要有创意,以便您可以从使用 Azure Functions 的内置队列触发器行为中受益,同时仍然控制队列的时间被处理实际上是通过 Azure Scheduler 之类的东西启动和停止函数实例本身。安排函数的启动非常简单,一旦启动,它将立即开始清空队列。挑战在于知道如何阻止它。具有队列绑定的 Azure Function 运行时永远不会自行停止,因为它正在使用拉模型读取队列,所以它只会坐在那里等待新消息到达,对吗?所以停止它实际上是一个了解业务需求的问题。一旦那天没有更多消息,你会停止吗?你会在一天中的特定时间停下来吗?等等。这里没有正确的答案,它完全是特定领域的,但无论答案是什么,都将决定所采用的确切方法。

老实说,正如我之前所说,我不确定这是完成这项工作的正确工具。是的,您获得重试和中毒处理是件好事,但您确实违背了运行时的原则。我个人建议您考虑安排这个简单的控制台可执行文件,它使用 Azure 容器实例 (some docs on that approach here) 以类似任务的方式执行。如果您指望 Azure Functions 的自动缩放,那完全可以从 Azure 容器实例中获得。