kafka教程-Offset偏移量(位移)和自动提交、及缺点 作者:马育民 • 2021-12-04 19:36 • 阅读:10488 # 说明 代码不需要显示操作 这种提交方式有两个很重要的参数: ``` # 是否开启自动提交,true or false enable.auto.commit=true # 提交偏移量的时间间隔,默认5000ms auto.commit.interval.ms=5000 ``` 每隔 5 秒,消费者会自动把从 `poll()`方法接收到的最大偏移量提交上去。 **缺点:**会发生 **重复消费** 和 **丢失消息** 的情况。 ### 缺点:重复消费 容易出现 **提交的偏移量** 小于 **客户端处理的最后一个消息的偏移量** 。 [![](https://www.malaoshi.top/upload/pic/kafka/Snipaste_2021-12-03_08-25-26.png)](https://www.malaoshi.top/upload/pic/kafka/Snipaste_2021-12-03_08-25-26.png) ### 缺点:丢失数据 [![](/upload/0/0/1IX328nYDPVc.png)](/upload/0/0/1IX328nYDPVc.png) **描述:** 1. 2号消息拉取后,正好赶上第5秒,自动提交offset 2. **在没处理完2号消息时**,程序崩溃,或服务器断电 3. 恢复程序运行后,拉取的是 **3号消息**,但是 **2号消息还没处理完**,造成丢失数据 # 解决 改成手动提交,处理消息完成后,再提交位移。 **好处:**即使处理消息的过程中发生了异常,由于没有提交位移,下次消费时还会从上次的位移处重新拉取消息,不会发生消息丢失的情况。 原文出处:http://malaoshi.top/show_1IX2LYYyhpcV.html