今天kafka遇到个问题,go代码中消费者一直接收不到消息。
开始排查问题:
- 登录kafka集群的三个节点,使用ps -ef +network查看三个节点的broker都是正常启动的。
- 查看启动配置,三个节点的broker.id分别为0,1,2
- ls /logs/kafka-logs 查看topic的日志,确定producer生产的消息都正确存储了。
- ./bin/kafka-topics.sh --describe --topic mytopic 查看topic的详细信息,确定topic是一个分区,一个副本,leader已经isr都是正常的。
- ./bin/kafka-console-consumer.sh --bootstrap-server myip:9092 --topic mytopic --from-beginning ,测试consumer,确定可以收到消息。
至此确定不是kafka服务的问题。 - 回头排查代码,发现在new consumer的时候指定了group,由于同一个topic只能被同一个消费者组内的一个consumer消费,如果该代码在别的地方部署了,我再进行部署的时候,我将消费不到数据。
- 通过查询消费者组信息验证
./bin/kafka-consumer-groups.sh --bootstrap-server myip:9092 --list
./bin/kafka-consumer-groups.sh --bootstrap-server myip:9092 --group mygroup --describe
遗留的问题:
- 如果指定group将会导致代码不能重复部署
- 如果不指定group,每次都从开始进行消费会导致重复消费
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)