【问题标题】:How data loss and data sequence is managed in RabbitMQRabbitMQ 中如何管理数据丢失和数据顺序
【发布时间】:2017-05-02 06:36:49
【问题描述】:

如kafka中的offset是用来管理需要传输给consumer的数据的顺序,那么在RabbitMQ中是如何进行这种类型的管理来管理数据顺序以防止数据丢失的。

【问题讨论】:

  • 你读过 rabbitmq 文档吗?

标签: rabbitmq


【解决方案1】:

RabbitMQ 消费者不会像 Kafka 消费者那样维护客户端偏移量。 Kafka 在配置的时间段内存储所有消息,客户端管理自己的偏移量,这意味着不同的客户端可以使用队列中不同偏移量的消息。这意味着不同的 Kafka 消费者不是竞争消费者,除非他们协调并共享他们的偏移量。

RabbitMQ 非常不同。消息被存储,直到它们被发送给消费者,然后被确认或过期。如果一个队列有多个消费者,那么他们就是竞争消费者,一条消息只能被众多消费者之一消费。

RabbitMQ 有一个传递标签的概念,它是一个单调递增的数字,通过通道传递的每条消息都会递增。它没有全局意义,它具有单个通道的范围,因此不会在不同服务器、进程上的消费者之间共享。消费者只需要跟踪这个数字来进行消息确认,由 RabbitMQ 负责选择将哪条消息传递给哪个消费者。

【讨论】:

    猜你喜欢
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2015-09-11
    • 2015-06-18
    • 1970-01-01
    • 2014-05-22
    相关资源
    最近更新 更多