为什么队列/ FIFO排序在Message Queue中很重要?

时间:2015-05-06 08:22:14

标签: design-patterns data-structures message-queue

Messaging Provider 的一个选项是 Message Queue ,它提供FIFO排序,即Queue。为什么消息的排序很重要?我想知道是不是因为消息的优先级或类似的东西。如果有人能用例子解释,我将不胜感激。

3 个答案:

答案 0 :(得分:5)

你的回答是正确的 - 从逻辑上讲,某些操作是相互依赖的,你必须维持调用顺序。

但我认为有一个更为重要的纯粹技术方面,我想指出:你需要知道能够实现ACID交易的顺序。

采取以下方案:

您有一个流程服务,可以协调其他5个实体/实用程序服务。该过程被触发并开始执行,但第三次调用失败。通常,在服务之间建立一个公共事务上下文(为了进行两阶段提交)太昂贵了,所以解决方案是使用 Compensation 即调用所有服务的相反操作在失败之前已经进行了写操作。如果你不能保证消息的顺序,你就不可能知道你应该回滚什么,什么不能(如果你没有明确地查看底层系统并自己跟踪变化 - 但这不是一个理智的方法)。

希望这有帮助!

答案 1 :(得分:1)

以下是我为答案写的内容:

通过实施队列数据结构,消费者将按照发送消息的顺序接收消息。例如,企业系统中的订单系统会向销售系统发送一些消息。让这些成为" GetPayment"和#34;发货"。如果这些消息没有排队,则销售系统可能会因通知"发货而导致出现故障。之前"获得付款"。

我们的想法是维护企业级工作流程。

PS :Plamen有更深入的答案。

答案 2 :(得分:0)

首先应该首先进入消息缓冲区。消息队列用于保留收到的消息的顺序。队列是先进先出。