kafka的重复消费问题

作者:喝不醉的solace
来源:CSDN
原文:https://blog.csdn.net/qq_16583617/article/details/79648221

重复消费场景:

1.消费端消费能力比较低,处理消息速度慢
2.根据kafka消费特性,消费者在每个partion上的位置都是一个整数,即消费下一条消息的偏移量。这个状态可以定期检查点,使得消息的确认变得非常的方便,消费者可以倒退回旧的偏移量,重新消费。
3.消息处理完之后提交下一个消费的offset,而在session-time-out前,消息还没有处理完,但是已经超时被kafka视为消费失败了,导致一直重复消费

解决方案:

1.关闭spring-kafka的自动提交
2.延长session-time-out,权衡max.poll.records减少poll()中返回的批次的最大大小来解决此问题,//一次从kafka中poll出来的数据条数
3.权衡自动提交的时间点,ps最好不要使用这种方式,无法尽量避免重复
4.完美解决的话,只有每次都判断消息是否重复消费过了,不过此方式性能开销比较大,严重影响QPS,根据场景取舍

你可能感兴趣的:(java)