Kafka自动提交offset设置

auto.commit.interval.ms

kafka自动提交offset的频率,默认是5000ms,就是5s

如果将enable.auto.commit设置为true,则消费者偏移量自动提交给Kafka的频率(以毫秒为单位)。

The frequency in milliseconds that the consumer offsets are
auto-committed to Kafka if enable.auto.commit is set to true.

自动提交是调用poll方法的时候顺便提交的,如果没有调用poll,时间到了也不会提交.

假设 enable.auto.commit 设置为 true,auto.commit.interval.ms 设置为 3000,试想一下会不会出现这样的问题:

poll 方法返回了 500 条数据,需要 5 秒钟才能处理完,假设在第 4 秒的时候应用挂了,offset 是不是在第 3
秒的时候已经被自动提交了,从而导致第 4 秒之后的数据“丢失”了?

正确答案是:不会的!虽然 auto.commit.interval.ms 设置为 3000,但是检查时间间隔是否过了 3 秒是由 poll 方法去触发的,所以只要在记录还没处理完之前我们没有主动去调用 poll 方法,就算时间间隔到了,也不会去自动提交。

如果auto_commit_interval_ms的值设置的过大,当消费者在自动提交偏移量之前异常退出,将导致kafka未提交偏移量,进而出现重复消费的问题,所以建议auto_commit_interval_ms的值越小越好

enable.auto.commit

如果为true,则将在后台定期提交消费者的offset。
默认值为true;

总结

  • offset自动提交,要注意可能引起重复消费的问题

参考

Kafka 中文文档 - ApacheCN
容易被误会的 kafka auto commit - Rason’s Blog:
Kafka提交offset机制_小白-CSDN博客_kafka offset机制

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值