【问题标题】:How dose a new consumer consume the messages produced in the past in RabbitMQ?一个新的消费者如何消费过去在 RabbitMQ 中产生的消息?
【发布时间】:2016-06-30 11:14:08
【问题描述】:

我是一名尝试运行 RabbitMQ 的 Apache Kafka 用户。 Kafka 支持消费者消费之前产生的任何消息。 (通过重新加宽 Kafka 日志中的“偏移量”)

我想知道 RabbitMQ 是否具有相同的功能。 (一个新的消费者来了,在某个时间点之后请求所有的消息。)

【问题讨论】:

    标签: rabbitmq amqp


    【解决方案1】:

    我想知道RabbitMQ是否有同样的功能

    没有。

    Kafka 专为该功能而构建 - 一个允许您从某个点向前移动的事件日志。

    RabbitMQ 是一个消息队列——先进先出。一旦消息被处理,它就完成了并且消失了。没有要遍历的历史记录或日志。


    有一个用于 RabbitMQ 的“最近历史”插件,但这不提供与 Kafka 相同的功能集。

    https://github.com/rabbitmq/rabbitmq-recent-history-exchange#readme

    它只允许您说“新消费者应该在继续获取新消息之前获取最后 20 条消息”之类的内容。

    另一方面,Kafka 为您提供了更广泛的历史,并且能够从头开始并根据需要继续前进。

    【讨论】:

    • RabbitMQ 消费者会收到订阅后产生的消息,对吧?谢谢
    • 假设队列中有一个消费者,在消费者连接并开始消费后,该消费者将收到队列中的任何消息。如果在消费者连接之前队列中有 5 条消息,消费者将收到这 5 条消息以及之后进来的所有消息
    • 但是一旦这 5 条消息消失了,并且另一个消费者连接到同一个队列,第二个消费者将不会收到这 5 条消息,因为这些消息已经消失了。没有历史记录,除了我提到的那个插件
    • 如果交换语义是“发布/订阅”或“主题”,那么所有消费者都会收到相同的消息
    • 我明白你的意思。 “每个消费者排队”很重要。感谢您提供详细的 cmets。我很感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-21
    • 2013-03-25
    • 2020-04-20
    • 1970-01-01
    • 2020-09-19
    • 2019-07-01
    相关资源
    最近更新 更多