Rabbitmq:如何在多个使用者中维护Rabbitmq的fifo特性?

Rabbitmq:如何在多个使用者中维护Rabbitmq的fifo特性?,rabbitmq,rabbitmq-exchange,Rabbitmq,Rabbitmq Exchange,我们有多个消费者来处理创建/更新/删除库存的请求 所有这些请求都在rabbitmq中处理。问题是,有时创建股票并立即删除时,会先处理“删除”消息,然后再处理“创建”消息 尽管我们在“删除”之前推送“创建”消息。这是因为我们有多个使用者在不同的服务器上运行 我的问题是,在多个消费者中运行它本身违反了队列的FIFO原则。如何避免这种情况?假设在提出建议之前,您的股票可能发生的事件顺序如下: 创造 更新(可选,可以是多个) 删除 在你所描述的极端情况下,这不会有帮助 我相信您的最佳选择是,无论是使用链

我们有多个消费者来处理创建/更新/删除库存的请求

所有这些请求都在rabbitmq中处理。问题是,有时创建股票并立即删除时,会先处理“删除”消息,然后再处理“创建”消息

尽管我们在“删除”之前推送“创建”消息。这是因为我们有多个使用者在不同的服务器上运行


我的问题是,在多个消费者中运行它本身违反了队列的FIFO原则。如何避免这种情况?

假设在提出建议之前,您的股票可能发生的事件顺序如下:

  • 创造
  • 更新(可选,可以是多个)
  • 删除
  • 在你所描述的极端情况下,这不会有帮助

    我相信您的最佳选择是,无论是使用链接中引用的插件,还是通过消息TTLs和备用exchange配置

    建议您按照以下方式进行配置:

    • 删除延迟200ms的邮件
    • 以100毫秒的延迟更新消息
    • 毫不延迟地创建消息
    并为使用者配置不允许预取

    提议的时间安排必须与每种类型事件的实际处理时间相适应

    但很明显,这一提议显然违反了先进先出原则

    如果您真的想维护FIFO,那么除了单个使用者之外,您别无选择(如果您希望备份进程“等待”使用机会,请配置独占使用)