一.问题现象:

go 客户端简单consumer 模式可以消费

go客户端consumer group模式不可消费,客户端运行到一下代码卡住

<-consumer.ready // consumer一直没有ready
fmt.Println("Sarama consumer up and running!...")

java客户端不可消费

客户端每次poll不到数据,没有日志输出

ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(1000)); //每次poll到0条数据

二.排查过程:

1.java客户端开启debug日志,查询debug日志

debug日志显示,找不到协调器(ConsumerCoordinator)

2.查询kafka服务端日志

[2020-10-21 13:01:53,464] ERROR [KafkaApi-0] Number of alive brokers '2' does not meet the required replication factor '3' for the offsets topic (configured via 'offsets.topic.replication.factor'). This error can be ignored if the cluster is starting up and not all brokers are up yet. (kafka.server.KafkaApis)

3.查询kafka的log文件夹

没有__consumer_offsets文件,说明offsets这个topic没有创建成功

三.原理:

1.consumer group的创建需要__consumer_offsets这个topic的创建,用来保存每个consumer成员提交的offsets

四.解决方案及注意:

1.offsets.topic.replication.factor默认为3.所有broker数量需要大于3

2.如果broker数量小于3,则需要设计offsets.topic.replication.factor小于等于broker数量

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐