问题现象
Sarama Go客户端存在以下已知问题:
当Topic新增分区时,Sarama Go客户端有概率无法感知并消费新增分区,需要客户端重启后,才能消费到新增分区。
Sarama Go客户端很多协议未遵从Kafka社区规范,例如在服务端异常宕机时,可能会出现以下问题:
有概率导致客户端触发OutOfRange机制。如果客户端的消费位点重置策略设置为
Oldest(earliest)
时,会从最小位点开始重新消费所有消息。有概率导致客户端一直处于Rebalance状态。
解决方案
建议尽早将Sarama Go客户端替换为Confluent Go客户端。
Confluent Go客户端的Demo地址,请访问kafka-confluent-go-demo。
重要
如果无法在短期内替换客户端,请注意以下事项:
针对生产环境,请将位点重置策略设置为
Newest(latest)
;针对测试环境,或者其他明确可以接收大量重复消息的场景,设置为Oldest(earliest)
。如果发生了位点重置,产生大量堆积,您可以使用云消息队列 Kafka 版控制台提供的重置消费位点功能,手动重置消费位点到某一时间点,无需改代码或换Consumer Group。具体操作,请参见重置消费位点。