是的,会导致重复消费。
要么先提交offset在处理消息,但当程序被强杀,或崩溃则会导致消息丢失。
我选择的是后者(程序做好压测,不随意更改线程和并发,不会崩溃)
那我的数据在提交offest之前已经入库了, 这里offest提交失败, 也就是偏移量信息写入__consume_offests失败, 那下一轮消费拿到的还是这批数据了? 数据重复了?
kafka一条消息默认处理是30秒,如果超过30秒就会被踢出group,重新选举,也就是说,你要在30秒内手动提交一次。
增加kafka超时时间:session.timeout.ms
,offsets.commit.timeout.ms
,request.timeout.ms
。