消息传递提供者的一个选项是消息队列,它提供 FIFO 排序,即队列。为什么消息的顺序很重要?我想知道是不是因为消息的优先级或类似的原因。如果有人能举例说明,我将不胜感激。
问问题
844 次
3 回答
5
您的回答是正确的 - 从逻辑上讲,某些操作是相互依赖的,您必须保持调用顺序。
但我认为我想指出一个更重要的纯技术方面:您需要知道能够实现 ACID 事务的顺序。
采取以下场景:
您有一个流程服务,它协调了 5 个其他实体/实用程序服务。该进程被触发并开始执行,但第三次调用失败。通常情况下,在服务之间拥有一个公共事务上下文(为了进行两阶段提交)太昂贵了,所以解决方案是使用补偿,即调用之前已经进行过写操作的所有服务的相反操作失败。如果你不能保证消息的顺序,你就不可能知道你应该回滚什么,什么不应该(如果你没有明确地查看底层系统并自己跟踪更改——但这不是一个理智的方法)。
希望这可以帮助!
于 2015-05-06T09:50:03.247 回答
1
这是我为我的答案写的:
通过实现 Queue 数据结构,消费者将按照发送顺序接收消息。例如,企业系统中的订单系统向销售系统发送一些消息。让它们成为“GetPayment”和“Make a Shipment”。如果这些消息没有排队,销售系统可能会在“获得付款”之前通知“发货”而出现故障。
这个想法是维护企业级工作流程。
PS:普拉门有更深入的答案。
于 2015-05-06T09:09:02.470 回答
0
首先进入消息缓冲区的任何内容都应该首先被提供。消息队列用于保留接收消息的顺序。队列是先进先出的。
于 2015-05-06T08:33:12.637 回答