kafka教程-Offset偏移量(位移)和自动提交、及缺点

说明

代码不需要显示操作

这种提交方式有两个很重要的参数:

# 是否开启自动提交,true or false
enable.auto.commit=true

# 提交偏移量的时间间隔,默认5000ms
auto.commit.interval.ms=5000

每隔 5 秒,消费者会自动把从 poll()方法接收到的最大偏移量提交上去。

缺点:会发生 重复消费 和 丢失消息 的情况。

缺点:重复消费

容易出现 提交的偏移量 小于 客户端处理的最后一个消息的偏移量 。

缺点:丢失数据

描述:

  1. 2号消息拉取后,正好赶上第5秒,自动提交offset
  2. 在没处理完2号消息时,程序崩溃,或服务器断电
  3. 恢复程序运行后,拉取的是 3号消息,但是 2号消息还没处理完,造成丢失数据

解决

改成手动提交,处理消息完成后,再提交位移。

好处:即使处理消息的过程中发生了异常,由于没有提交位移,下次消费时还会从上次的位移处重新拉取消息,不会发生消息丢失的情况。


原文出处:/show_1IX2LYYyhpcV.html