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

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值