Consumer group理解深入

Posted 指尖上的艺术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Consumer group理解深入相关的知识,希望对你有一定的参考价值。

  每一个consumer实例都属于一个consumer group,每一条消息只会被同一个consumer group里的一个consumer实例消费。(不同consumer group可以同时消费同一条消息)
  
  很多传统的message queue都会在消息被消费完后将消息删除,一方面避免重复消费,另一方面可以保证queue的长度比较少,提高效率。而如上文所将,Kafka并不删除 已消费的消息,为了实现传统message queue消息只被消费一次的语义,Kafka保证保证同一个consumer group里只有一个consumer会消费一条消息。与传统message queue不同的是,Kafka还允许不同consumer group同时消费同一条消息,这一特性可以为消息的多元化处理提供了支持。实际上,Kafka的设计理念之一就是同时提供离线处理和实时处理。根据这一 特性,可以使用Storm这种实时流处理系统对消息进行实时在线处理,同时使用Hadoop这种批处理系统进行离线处理,还可以同时将数据实时备份到另一 个数据中心,只需要保证这三个操作所使用的consumer在不同的consumer group即可。
  
  说明:创建一个topic (名为topic1),创建一个属于group1的consumer实例,并创建三个属于group2的consumer实例,然后通过producer 向topic1发送key分别为1,2,3r的消息。结果发现属于group1的consumer收到了所有的这三条消息,同时group2中的3个 consumer分别收到了key为1,2,3的消息。

以上是关于Consumer group理解深入的主要内容,如果未能解决你的问题,请参考以下文章

RocketMq实战篇:Docker部署Consumer客户端造成的RocketMQ的一场血案(重复消费和NOT_CONSUME_YET)

RocketMq实战篇:Docker部署Consumer客户端造成的RocketMQ的一场血案(重复消费和NOT_CONSUME_YET)

Reactor:深入理解reactor core

深入理解函数式编程一种基于Consumer和Builder的OkHttp函数式编程方法

Reactor:深入理解reactor core

kafka的consumer.properties的group.id到底有啥用