【问题标题】:Azure LogicApp reading messages from storage queue but not processingAzure LogicApp 从存储队列中读取消息但不进行处理
【发布时间】:2023-01-14 20:29:08
【问题描述】:

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

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

当我看着运行历史输出区域显示消息当队列中有消息时步骤,但获取消息 (V2)步骤没有显示在其中有任何 QueueMessages 要处理输出:

我还观察到在 LogicApp 运行后消息被出列并返回,并带有增加的出列计数属性。

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

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

【问题讨论】:

  • 消息一旦被处理就会出列,这就是框架的整体工作方式。还有一个问题,如果队列中有 31 条消息,而另一条消息又 5 天没有进来怎么办,我假设您想及时处理这 31 条消息,比如每 5 到 10 分钟或其他什么时间?
  • 我错误地认为它会在队列填满时分批运行任意数量的消息,最多 32 条。但是我现在知道我是不正确的,而是按照下面的 SwethaKandikonda-MT 建议,我在它们进来时一次处理每个 1。

标签: azure azure-logic-apps azure-storage-queues


【解决方案1】:

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

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

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

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

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

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

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

结果:

【讨论】:

  • 谢谢你。这大大澄清了事情。
猜你喜欢
  • 2019-03-14
  • 2021-06-21
  • 2020-12-12
  • 2014-01-28
  • 2019-07-12
  • 2022-10-08
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
相关资源
最近更新 更多