Azure LogicApp 从存储队列中读取消息但不进行处理

Azure LogicApp reading messages from storage queue but not processing

我正在设置 Azure LogicApp 以从存储队列中读取消息,并将消息POST发送到 API 端点:

LogicApp 按预期触发并记录成功 运行。我可以看到我的队列消息已从队列中删除,但随后又被放回队列中,因为 LogicApp 没有处理每个循环,也没有 运行 我在循环中的 DeleteMessage 步骤。

当我查看 运行 历史记录 时,OUTPUTS 区域显示 中的消息queue 步骤中有消息,但 Get Messages (V2) 步骤未显示其 OUTPUTS[= 中有任何 QueueMessages 要处理33=]:

我还观察到在 LogicApp 运行.

之后,消息被出列并以增加的出列计数 属性 返回

为什么第一步会使消息出列?它不会只是检查是否存在任何消息而不拉取它们吗?如果是第 2 步提取的,那么为什么我在输出中看不到任何消息?

如何正确处理队列消息?我想将它们分成 32 个批次(这是最大数量)并在 For each 循环中处理它们。

Why would the first step dequeue a message? Wouldn't it just check to see if any messages exist without pulling them? If it was step 2 that pulled it then why do I not see any messages in the OUTPUT?

触发器 When there are messages in a queue (V2) return 是队列中存在的消息,这就是您无法在 Get Messages 操作中看到消息的原因。

根据您的要求,当您希望每次将消息推入队列时触发时,您可以使用 Message TextWhen there are messages in a queue (V2) 连接器。

注意:此流程针对队列中的每条消息触发,并将消息多次发送到您的 API 端点。

How can I process my queue messages properly? I would like to pull them in batches of 32 (which is the max amount) and process them in the For each loop.

然而,如果您想将它们作为一批 32 个获取,那么您可以使用 When there are messages in a queue (V2) 以外的任何触发器,然后使用 Get Messages 操作。

如果您仅限于使用存储队列连接器,那么您可以使用 When a specified number of messages are in a given queue (V2), 否则一个简单的 HTTP 触发器就足以触发逻辑应用程序。

结果: