更新时间:2024-04-07 GMT+08:00
        
          
          
        
      
      
      
      
      
      
      
      
  
      
      
      
        
为什么不建议使用Sarama客户端收发消息?
问题现象
使用Sarama客户端收发消息存在以下问题:
- Sarama客户端无法感知分区变化,当Topic分区数增加时,需要重启客户端后才能正常消费。
 - Sarama客户端消息最大处理时间(MaxProcessingTime)默认值为100ms,超过最大处理时间可能导致消费者无法消费。
 - 当消费位点重置策略设置为Oldest(earliest)时,当客户端重启时,偏移量重置后可能从最小位点开始重复消费所有消息。
 - 消费者同时订阅多个Topic时,部分分区可能无法消费到消息。
 
解决方法
建议您使用Confluent-Kafka-go作为Kafka客户端库。
以下为您提供常用Golang客户端的对比,具体参见表1。
| 
        客户端  | 
      
        优点  | 
      
        缺点  | 
     
|---|---|---|
| 
        Confluent-Kafka-go  | 
      
       
  | 
      
        增加编译复杂度。由于导入C++库,Golang编译器需要引入额外编译配置,增加了编译依赖,提高编译复杂度。  | 
     
| 
        Kafka-go  | 
      
       
  | 
      
       
  | 
     
| 
        Sarama  | 
      
        Sarama采用原生Golang语言编写,对于异步以及高并发操作支持度较好。  | 
      
       
  | 
     
   父主题: 连接问题