【问题标题】:Deliver Exactly Once仅交付一次
【发布时间】:2019-05-15 20:30:45
【问题描述】:

有没有办法配置使用 RabbitMQ 交换/队列传递的消息的“恰好一次”处理?基本上,我们有一个由集群中的 2 个节点组成的消费应用程序,这两个节点都将订阅 Rabbit 上的同一个队列,但是这两个节点中只有一个节点应该在给定时间处理消息。我的第一个想法是,考虑到 rabbit 使用“循环”消息传递,这将开箱即用,但是我们不能保证将来不会有其他消费者。为每个消费应用程序创建特定队列并使用默认循环分配功能的最佳做法是什么?

【问题讨论】:

    标签: rabbitmq


    【解决方案1】:

    队列的额外消费者将像现有消费者一样成为循环消息消费的一部分。路由到报价单的每条消息都将准确地传递给一个消费者。

    为每个消费应用程序创建一个独占队列将导致如何确保恰好一次语义的问题。这将需要 RabbitMQ 将每条消息路由到这些队列中的一个。为了实现这一点,交易所将采用循环方式进行路由。这在 AMQP 中是不可能的。

    使用单个队列并使用任意数量的工作人员来使用其中的消息。这将为您提供恰好一次的语义。

    【讨论】:

    • 请注意,如果消费者在发送确认之前死亡,或者在其他边缘情况下,消息总是可以重新传递。
    猜你喜欢
    • 2018-07-15
    • 2019-03-05
    • 1970-01-01
    • 2019-10-01
    • 2017-06-14
    • 2019-02-28
    • 2013-06-17
    • 2011-06-03
    • 1970-01-01
    相关资源
    最近更新 更多