问题遇到的现象和发生背景
Springboot集成kafka,当程序重启后,消费者从历史没有消费的数据开始消费,如何配置能够让消费者消费实时数据,将历史未消费数据丢弃?
我的解答思路和尝试过的方法
kafka配置如下:
使用上面 auto-offset-reset: latest 配置 无法实现此效果,未能解决。
我想要达到的结果
springboot程序重启后,kafka能够从最新产生的数据开始消费,达到实时处理的效果。
Springboot集成kafka,当程序重启后,消费者从历史没有消费的数据开始消费,如何配置能够让消费者消费实时数据,将历史未消费数据丢弃?
kafka配置如下:
使用上面 auto-offset-reset: latest 配置 无法实现此效果,未能解决。
springboot程序重启后,kafka能够从最新产生的数据开始消费,达到实时处理的效果。
Kafka客户端重连会取zookeeper里上一次提交的偏移量然后从偏移量消费,这部分逻辑是封装在Apache Kafka client的包里面和spring无关,如果你需要每次都从最新的偏移量消费可以定制消费者逻辑,即自己适配Kafka client逻辑然后提供给spring上层。
当然从结果来看最简单的办法是使用动态不重复的group ID,这样每次启动Kafka client在zookeeper找不到偏移量就会应用auto-offset-reset策略,如果是latest就会从最新的偏移量开始消费。