【问题标题】:Azure Service Bus Topic Subscriber receiving messages not in orderAzure 服务总线主题订阅者接收消息不按顺序
【发布时间】:2019-09-09 08:44:18
【问题描述】:

我正在使用 azure 服务总线主题,并且我已为其订阅启用会话。

在我的逻辑应用程序中,我使用来自主题的 sql 事务插入数据 我正在使用主题订阅(peek-lock)和 在订阅者级别并发设置为默认如下

根据我的理解,我的逻辑应用程序(订阅者)应该读取所​​有消息并且必须在 FIFO 中处理
我的逻辑应用就像

这意味着它应该以有序的方式向表中插入数据

但是,当我检查触发器日志时,它显示了正确的顺序,但在数据库级别,您可以看到顺序没有发生

【问题讨论】:

  • LImit 已关闭,这意味着将运行多个逻辑应用实例。您需要启用限制以使单个实例处理消息。
  • true 我们可以将限制设置为 1,这个问题将解决,另一个将创建,因为我正在将数据插入数据库,如果整个过程需要 1 分钟才能完成,我可以插入的最大记录数天将是 1440。还有其他建议吗?

标签: azure azureservicebus azure-servicebus-topics


【解决方案1】:

消息排序是一项微妙的业务。您可以进行消息排序或并发处理,但不能同时进行。一旦您必须进行消息排序,您就失去了并发处理的能力。这对于 Azure 服务总线会话和逻辑应用并发控制都是正确的。您可以处理多个 sessions,但每个会话仍将仅限于单个处理器。这是关于它的post。

【讨论】:

  • 我知道这不是您所期望的答案,但有序消息传递非常棘手。任何提供 FIFO 的消息传递系统都有其限制。最大的限制是并发处理器的数量。
  • 是的,如果我启用并发控制限制并将其设置为 1。它是按预期排序的消息,并将按顺序处理。这是部分解决问题但这里的问题是,由于处理不是并行发生的,因此花费了很多时间。对于每条记录插入,大约需要 1 分钟,因此使用该解决方案我无法处理批量插入操作。 :-( 无论如何感谢您的解释
猜你喜欢
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
  • 2020-12-30
  • 2019-02-12
  • 2018-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多