Design patterns 为什么队列/FIFO排序在消息队列中很重要?
消息传递提供程序的一个选项是,它提供FIFO排序,即队列。为什么消息的顺序很重要?我想知道这是因为信息的优先级还是类似的原因。如果有人能举例说明,我将不胜感激。任何首先进入消息缓冲区的内容都应该首先得到服务。消息队列用于保留所接收消息的顺序。队列是先入先出的。以下是我写的答案: 通过实现队列数据结构,使用者将按照发送消息的顺序接收消息。例如,企业系统中的订单系统向销售系统发送一些消息。让这些是“获取付款”和“发货”。如果这些消息没有排队,销售系统可能会在“获得付款”之前通知“发货”,从而出现故障 其思想是维护企业级工作流Design patterns 为什么队列/FIFO排序在消息队列中很重要?,design-patterns,data-structures,message-queue,Design Patterns,Data Structures,Message Queue,消息传递提供程序的一个选项是,它提供FIFO排序,即队列。为什么消息的顺序很重要?我想知道这是因为信息的优先级还是类似的原因。如果有人能举例说明,我将不胜感激。任何首先进入消息缓冲区的内容都应该首先得到服务。消息队列用于保留所接收消息的顺序。队列是先入先出的。以下是我写的答案: 通过实现队列数据结构,使用者将按照发送消息的顺序接收消息。例如,企业系统中的订单系统向销售系统发送一些消息。让这些是“获取付款”和“发货”。如果这些消息没有排队,销售系统可能会在“获得付款”之前通知“发货”,从而出现故障
PS:Plamen有更深入的答案。您的答案是正确的-从逻辑上讲,某些操作是相互依赖的,您必须保持调用顺序 但我认为这其中还有一个更重要的纯技术方面,我想指出:您需要知道实现ACID事务的顺序 以以下场景为例: 您有一个流程服务,它协调了其他5个实体/实用程序服务。进程被触发并开始执行,但第三次调用失败。通常情况下,在服务之间拥有一个公共事务上下文(为了实现两阶段提交)代价太高,因此解决方案是使用补偿,即调用所有在失败之前已经执行了写操作的服务的相反操作。如果您不能保证消息的顺序,您就不可能知道应该回滚什么和不回滚什么(如果您没有明确查看底层系统并自己跟踪更改,但这不是一种明智的方法)
希望这有帮助 感谢您的回答,我想从企业系统的角度来回答,而不是从技术角度。再次感谢你,我完全理解你的意思。这让事情变得更清楚了。谢谢你的帮助,伙计。