go应用程序写kafka阻塞(大坑)
生活随笔
收集整理的這篇文章主要介紹了
go应用程序写kafka阻塞(大坑)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
由于是大數據,打日志相對麻煩,使用玄坤大法,選點打日志,才把這個bug糾出來。
使用庫:sarama
addrs := strings.Split(config.Kafka.RealBroker, ",") kafkaConfig := sarama.NewConfig() kafkaConfig.Producer.Timeout = 3 kafkaConfig.Producer.Return.Errors = false //設置成false,防止失敗過多,沒有消費導致阻塞,而且不是必現,極難排查 kafkaConfig.Producer.Return.Successes = false kafkaConfig.Producer.MaxMessageBytes = 50 * 1024 * 1024 producer, err := sarama.NewAsyncProducer(addrs, kafkaConfig) if err != nil {log.Println("new async producer err: ", err)_,file,line,_ := runtime.Caller(0)dingding.PushMessage(fmt.Sprintf("new async producer err:%v file:%s line:%d",err,file,line))return err } conn.KafkaProducer = producer如果kafkaConfig.Producer.Return.Errors和kafkaConfig.Producer.Return.Successes設置為true,則一定要有相應的消費channel的代碼,否則可能發生消息阻塞。
總結
以上是生活随笔為你收集整理的go应用程序写kafka阻塞(大坑)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kafka版本 不对问题
- 下一篇: 摸透 Redis 主从复制、哨兵、Clu