如何在消息处理系统中保持相关消息的顺序?

时间:2019-06-13 13:42:28

标签: message middleware distributed-computing distributed

系统从MQ获得消息。出于系统具有多个VM的原因,处理消息的实际顺序可能与MQ中的顺序不同。(等。可能处理一条后一条消息,存储在数据库中的前一条消息之前)。

现在,我希望具有相同业务ID的消息可以按发送时的顺序进行处理。

我可以得到一个建议,我们可以使用一个VM并从MQ读取消息。并获取Business-Id并将消息分发到目标VM(具有相同Business-Id的消息将分发到同一VM)。可以解决此问题,但是只有一个线程可以完成分发工作,性能可能不好。

还有其他解决方法吗?任何博客,论文,开源代码都可以。

1 个答案:

答案 0 :(得分:0)

分布式系统中消息传递的基本属性之一是消息将被无序处理。常见的解决方案是使用Saga(状态机)。使用Saga,您可以识别索引器或您的业务流程(例如orderId),然后管理长时间运行的流程。

以下是NServiceBus如何解决此问题的示例:https://docs.particular.net/nservicebus/sagas/?version=core_7.2

相关问题