文章内容输出来源:拉勾教育Java高薪训练营;
kafka 消费者是做什么的?既然生产者是往 broker 中topic 特定的 分区发送消息。那么消费者就是从这些分区中读取消息了。那具体的流程又是怎么样的呢?有又哪些特性呢?接下来我们一起揭晓。
消费者和消费组
我们先来说说什么是消费者和消费组。
消费者是从订阅的主题中消费消息,一群消费者组成的一个消费组。多个从同一个主题消费的消费者可以加入到一个消费组中,消费组中的消费者共享group_id。也就是说消费组中的所有消费者的 group_id 是一样的。
注意消费组均衡地给消费者分配分区,每个分区只由消费组中一个消费者消费。这样就可以避免消息重复消费了。

如果消费组中消费者数量小于topic 中的分区数量,就说明有不同的分区指向了同一个消费者。
如果消费组中消费者的数量等于topic 中的分区数量,说明每个分区指定一个消费者。
如果消费组中国消费者的数量大于 topic 中的分区数量,说明消费组中会有空余的消费者。
这样的机制有什么好处?
可以分方便的横向扩展消费者。比如说,如果发现主题中分区很多,消费者组消费不过来,出现了消息的堆积。这个时候就可以拓展消费组,增加消费者,从而消除消息堆积的问题。
心跳机制
既然每个分区都绑定一个消费者,消费者和topic 之间就得检测心跳了。Kafka 的心跳是 Kafka Consumer 和 Broker 之间的健康检查,只有当 Broker Coordinator 正常时,Consumer 才会