Azure 逻辑应用程序中服务总线连接器的消息处理策略

Messages processing policy for Service Bus connector in Azure Logic App

我有 Azure Logicapp,它使用 当一条或多条消息到达主题时(窥视锁定) 连接器处理来自服务总线主题的消息。

我已经用相同的 session-id 向服务总线发送了 40 条消息

正如我们从 documentation 中了解到的那样,此连接器每个 运行 可以处理 20 条消息。 但是 我们在这里看到的。

第一个运行 我有另一个时区 (UTC+3),所以时间有变化

第二个运行

第三个运行

我们有三个 1/20/19

而不是两个 运行 20/20

为什么会这样?我在文档中找不到解释?

逻辑应用不会等待 20 条消息累积,因为它不知道是否还会有更多消息。所以它会立即触发第一条消息。此时,没有其他消息可供处理。

根据您屏幕截图中的时间戳,情况如下:

  1. 设置逻辑应用、配置触发器等
  2. 开始发送消息
  3. 逻辑应用接收你发送的第一条消息
  4. 您已发送完 40 条消息
  5. 逻辑应用完成处理第一条消息
  6. 逻辑应用选取接下来的 20 条消息
  7. 逻辑应用选取最后 19 条消息。

Logic app Service Bus 不保证批处理实现此用途batch receiver

看起来逻辑应用程序将被第一条消息触发,并尝试预取接下来的 20 个(默认大小)项目并为下一个项目执行此操作。

Some triggers, such as the When one or more messages arrive in a queue (auto-complete) trigger, can return one or more messages. When these triggers fire, they return between one and the number of messages that's specified by the trigger's Maximum message count property.

https://docs.microsoft.com/en-us/azure/connectors/connectors-create-api-servicebus

我想告诉您 20 是连接器中的默认计数,您可以增加计数(最大消息计数)。它可能无法完全解决您面临的问题,但至少可以让您减少执行次数。

要解决第一个消息问题,请考虑使用批处理接收器。