当前位置:   article > 正文

Kafka 消息不丢失_kafka如何保证消息不丢

kafka如何保证消息不丢

Kafka 消息不丢失

Kafka 要保证消息不会丢失,需要在producer、broker、consumer共同保证消息不丢失

一、producer生产者配置

  • producer端使用producer.send(msg,callback) 带有回调 send 的方法,而不是producer.send(msg)方法,根据callback 回调,一旦消息提交失败,就可以针对性的补偿处理。
  • 设置ack=all,表面所有的broker上的副本都已经落盘成功了,才算是“已提交”
  • retries >1自动重试的次数,当出现网络问题时,消息可能会发送失败,配置了retries 能够自动重试,尽量避免消息丢失。最严谨的方式是失败的消失日志记录或者入库,然后定时重发。

二、Broker配置

  • unclean.leader.election.enable =false,禁止ISR之外的副本参与选举,否则就有可能丢丢失消息
  • replication-factor >=3,需要三个以上的副本
  • min.insync.replicas>1,broker端的参数,至少写入多少个ISR中副本才算是“已提交”,大于1 可以提升消息的持久性,推荐设置replication-factor=min.insync.replicas+1

三、consumer消费者配置

  • 确保消息已经消费完成在提交
  • enable.auto.commit 设置成false,并自己来处理offset的提交更新

四、总结

  • producer,保证发送成功,需要broker ack
  • broker, 保证持久化落盘成功
  • consumer, 保证消费成功,手动commit

当然整个过因为网络等问题,导致的重复发送或者重复消费,这个就需要看具体的业务,是否需要幂等的操作。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/548018
推荐阅读
相关标签
  

闽ICP备14008679号