我有一个函数每天调用一次处理队列中的所有消息。但是我也希望像Queue Trigger一样有重试和有毒消息逻辑。这有点可能吗?
答案 0 :(得分:0)
所以在这一点上你的功能纯粹是一个定时器触发的功能,从那里你就没有什么不同的控制台应用程序,你必须如何处理来自队列的消息与你自己的客户端连接,消息循环,重试和死刻字(毒药)逻辑。说实话,这不是适合这项工作的正确工具。
我假设您可以考虑的一种方法,如果您想要具有创造性,那么您可以从使用Azure功能的内置队列触发器行为中受益,同时仍然控制队列处理的时间实际开始并通过Azure Scheduler之类的东西停止函数实例。调度函数的启动非常简单,一旦启动,它将立即开始排空队列。挑战在于知道如何阻止它。具有队列绑定的Azure Function运行时将不会自行停止,因为它使用拉模型读取队列,所以它只是坐在那里等待新消息到达,对吧?所以停止它真的是一个理解业务需求的问题。一旦那天没有剩下的消息,你会停止吗?你是在一天的特定时间停下来的吗?等等。这里没有正确的答案,它完全是针对特定领域的,但无论答案是什么,都将决定采取的确切方法。
老实说,正如我之前所说,我不确定这是否适合这项工作。是的,你得到重试和毒药处理很好,但你真的要反对运行时的细节。我个人建议你研究这个简单的控制台可执行文件,使用Azure容器实例(some docs on that approach here)以类似任务的方式执行。如果您指望Azure功能的自动扩展,那么您也可以从Azure容器实例中获得这些功能。