代码之家  ›  专栏  ›  技术社区  ›  pennstatephil

扇出交换上的RabbitMQ重试逻辑

  •  0
  • pennstatephil  · 技术社区  · 8 年前

    RabbitMQ周围的当前系统架构

    我们有一组队列和交换来支持消息。

    1. 主队列
    2. 死交换和队列
    3. :如果需要重新尝试,这是从消费者那里获取消息的队列。该队列中的消息具有特定的ttl,该队列的死交换是主交换。并没有人听这个队列,消息只是坐到到期,并转移到主交换。
    4. 错误队列

    上述设置的问题场景:

    当前实施的解决方案(我们想要比这更好的东西!)

    每个队列有一个exchange,用于在重试超时后将重试的消息发送回特定队列。

    在这个场景中,我们有3个交换(foo-exchange、foo-exchange-dead、Baz-exchange-retry(每个队列1个到扇出交换)和3个队列(Baz-queue、Baz-queue-delay、Baz-queue-error和整个交换的1个死队列(foo-queue-dead)。

    此设置用于1个队列到扇出,并且将大大增加扇出交换具有多个使用者队列的数量。

    我们已经调查过的事情:

    1. x延迟交换 https://github.com/rabbitmq/rabbitmq-delayed-message-exchange )
    2 回复  |  直到 5 年前
        1
  •  1
  •   Gary Russell    8 年前

        2
  •  0
  •   Sunil Singhal    8 年前

    其中一个选项是在放入延迟队列之前用目的地详细信息装饰消息,然后当消息等待时间到期时,打开消息以获得目的地和原始消息并发送到目的地。

    推荐文章