我们有多个消费者来处理库存的创建/更新/删除请求。
所有这些请求都在rabbitmq中处理。问题是有时候当创建股票并立即删除时,"删除"消息首先被处理,"创建"消息以后。
虽然我们推动"创造"之前的消息"删除"。这是因为我们有多个消费者在不同的服务器上运行。
我的问题是,运行多个消费者本身违反了队列的FIFO原则。如何避免这种情况?
答案 0 :(得分:1)
在提案之前的假设,您的股票的可能事件顺序是:
由于message priority在您所描述的极端情况下无法提供帮助,
我相信你最好的选择是delayed messages,无论是链接中引用的插件,还是通过消息TTL和备用交换配置。
建议您按照以下方式配置:
并为消费者配置不允许预取。
提议的时间必须根据每种类型事件的实际处理时间进行调整。
但很明显,该提案肯定违反了FIFO原则。
如果您真的想要维护FIFO,请不要认为除了单个消费者之外您还有其他选择(如果您想要备份流程,请配置独占消费;等待"有机会消费)