kafka 避免消息丢失

"kafka 避免消息丢失"

Posted by tablesheep on

消息丢失

broker

  • replication.factor ,指定topic 副本数量 > 3

  • unclean.leader.election.enable=false,禁止ISR中落后太多的副本成为leader,默认为false

  • min.insync.replicas,当生产者设置acks=all时,必须满足此配置的写入副本数量消息才算发送成功,确保replication.factor > min.insync.replicas,典型的例子是replication.factor=3min.insync.replicas=2

    1
    2
    
    #min.insync.replicas 在创建完topic后使用脚本配置
    $./bin/kafka-configs.sh --bootstrap-server localhost:9092 --alter --entity-type topics --entity-name topic-name --add-config min.insync.replicas=2
    

producer

  • acks=all/-1min.insync.replicas数量的副本写入成功才算成功
  • retries > 0,消息发送重试次数
  • 发送消息时要确认是否发送成功,使用带有回调的send,producer.send(msg, callback)

consumer

  • 位移提交要注意,事前提交会丢失