kafka避免消息丢失和重复消费

本文探讨了如何避免Kafka消息丢失,包括设置broker的保留策略和消费者offset管理,以及生产者的ack机制。同时,分析了重复消费的原因,如offset未提交、线程中断、session超时等,并提出了自动提交offset、限速及维护offset记录等解决方案。
摘要由CSDN通过智能技术生成

消息丢失

避免消息丢失包含两个方面:

  • 还没有被消费过的消息不会被清除。

在没有外部系统清除kafka消息的情况下,协调设置broker的最大保留大小 log.retention.bytes 和 最大保留时间log.retention.hours 等,来配合消费者端的读取消息。可以通过读取和监控消费者消费的offsets,来保证消息不会被意外清除。

  • 消费者端消费消息没有遗漏。

当消费者意外中断时,重新启动消费时能够从上一次中断的消息偏移量开始消费。

  1. 通过配置来保证消息不丢失

生产者数据的不丢失
kafka的ack机制:在kafka发送数据的时候,每次发送消息都会有一个确认反馈机制,确保消息正常的能够被收到。

  • 如果是同步模式:ack机制能够保证数据的不丢失,如果ack设置为0,风险很大,一般不建议设置为0
producer.type=sync 
request.required.acks=1

 

  • 如果是异步模式:通过buffer来进行控制数据的发送,有两个值来进行控制,时间阈值与消息的数量阈值,如果buffer满了数据还没有发送出去,如果设置的是立即清理模式,风险很大,一定要设置为阻塞模式
producer.type=async 
request.required.acks=1 
queue.buffering.max.ms=5000 
queue.buffering.max.messages=100
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值