azure - 如何判断 Azure 队列中的最后一条消息何时被删除

标签 azure recursion azure-functions azure-queues

我正在探索 Azure 函数和队列触发器来实现递归求解器。

所需的行为如下:

  1. 存在一个名为“solveme”的队列,当它收到包含状态的项目时,将创建具有唯一名称 (GUID) 的第二个队列,并将初始状态和一些相关信息发送到该队列。

  2. 当一条消息被接收到新创建的队列中时,它可能会排队代表所有下一个可能状态的更多工作,以便在消息“完成”之前,新工作将存在于队列中。如果给定状态没有有效的下一个状态,它将仅完成消息。这意味着在所有新工作排队之前原始消息并未“完成”。在此步骤中,我将使用步骤 1 中的相关信息将数据注销到表示有效解决方案的 Azure 表中。

<强>3。当新创建的队列中的所有消息都处理完毕后,删除该队列。

我不知道如何在没有计时器或检查队列长度直到它为零并删除它的情况下进行#3。我尝试仅使用 Azure Functions 和 Azure 存储 - 不使用其他任何东西。

如果有办法直接从 QueueTrigger 或在 QueueTrigger 调用的函数中执行操作,那就太好了。

此外,是否有更好/标准的方法来触发此类工作的完成?实际上,空队列是所有工作完成的触发器,但如果有更好的方法,我想知道!

最佳答案

没有可靠的方法可以开箱即用地做到这一点。如果你的消费者比生产者快,队列可能会长时间保持在 0,而生产者仍然不断发送数据。

我建议您发送一个特殊的“序列结束”消息,这样当消费者收到此消息时,它就知道要删除队列。

附注看看Durable Functions - 看起来您可以使用其中的一些编排,而不是自己实现工作流程(请注意它处于早期预览中)。

关于azure - 如何判断 Azure 队列中的最后一条消息何时被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45084261/

相关文章:

c# - 集合中的递归函数

java - 如何递归地找到直方图中的最大矩形面积?

Azure逻辑应用程序中的Azure Function Produce 404

java - 使用递归查找数组是否对称

azure - 在 Service Fabric 集群上发布应用程序后 HttpContext.Session 为空

sql-server - 将 .MDF 文件与服务器数据库 T-SQL 同步

Windows Server 上的 Azure 环境

python - 如何构建azure函数python项目

c# - 无法在 Azure Function 中绑定(bind) BlobProperties

python-3.x - 将 Azure AD 中的主体 ID 解析为用户、服务