- 0
- 0
- 约1.81千字
- 约 2页
- 2026-06-02 发布于北京
- 举报
《030_Kafka消费丢失数据及手动提交方案》
在使用Kafka时,如果producer写数据时没有经过某些参数的优化,可能会导致数据丢
失。例如,min.insync.replicas=1参数设置为leader即可写入,acks=1设置为只写
入leader即算成功。如果leader出现故障,数据肯定会被丢失。此外,
unclear.leader.election.enabled=设置为true时,不干净的leader也可以进行。
在consumer端消费数据时,可能会出现数据丢失的场景和问题。如果正常消费完成后,
返回一个成功的响应,并且开启了autocommit自动提交,那么这个offset的消息将被
标记为已成功消费,下次不会再重复交付给你进行消费和处理。
consumer获取消息后,可能会将消息交给线程池进行异步处理,然后立即返回一个成功
的响应,并提交offset给broker。如果异步处理失败,消息实际上并未成功消费,但由
于开启了autocommit,broker会自动提交该offset。
broker下次不会再次将消息给我们的consumer使用,可以关闭autocommit机制,
不要自动提交offset,而是等待我们手动调用mitSync,手动执行提交操
作。
在consumer中,可以将m
原创力文档

文档评论(0)