【发布时间】:2017-05-02 06:36:49
【问题描述】:
如kafka中的offset是用来管理需要传输给consumer的数据的顺序,那么在RabbitMQ中是如何进行这种类型的管理来管理数据顺序以防止数据丢失的。
【问题讨论】:
-
你读过 rabbitmq 文档吗?
标签: rabbitmq
如kafka中的offset是用来管理需要传输给consumer的数据的顺序,那么在RabbitMQ中是如何进行这种类型的管理来管理数据顺序以防止数据丢失的。
【问题讨论】:
标签: rabbitmq
RabbitMQ 消费者不会像 Kafka 消费者那样维护客户端偏移量。 Kafka 在配置的时间段内存储所有消息,客户端管理自己的偏移量,这意味着不同的客户端可以使用队列中不同偏移量的消息。这意味着不同的 Kafka 消费者不是竞争消费者,除非他们协调并共享他们的偏移量。
RabbitMQ 非常不同。消息被存储,直到它们被发送给消费者,然后被确认或过期。如果一个队列有多个消费者,那么他们就是竞争消费者,一条消息只能被众多消费者之一消费。
RabbitMQ 有一个传递标签的概念,它是一个单调递增的数字,通过通道传递的每条消息都会递增。它没有全局意义,它具有单个通道的范围,因此不会在不同服务器、进程上的消费者之间共享。消费者只需要跟踪这个数字来进行消息确认,由 RabbitMQ 负责选择将哪条消息传递给哪个消费者。
【讨论】: