怎么让kafka客户端只消费启动之后收到的消息?

我用的spring-kafka,让kafka客户端订阅指定topic的指定分区,默认的订阅方式在客户端重启之后会紧接着上一次消费的消息之后继续接收,我这样修改之后也仅仅能让客户端重启之后从重启前产生的最后一条消息开始消费:

TopicPartitionInitialOffset joinTopic = new TopicPartitionInitialOffset("__join", 0, -1L, false);

其中的-1L就表示从最后一条消息开始消费,如果改成0L的话就是默认的订阅方式了,但我的业务中需要只消费启动之后产生的消息,有什么方法可以实现这一点?

阅读 5.1k
2 个回答

发送消息的时候增加时间戳

可以试试配置默认消费偏移量为最新 spring.kafka.consumer.auto-offset-reset=latest 不过这个配置理论上只对第一次消费(此时没有偏移量,按配置的策略来)有效,不过可以变通的方式来实现,如果每次启动时 group.id 不同的话可以实现,当然这种方式有点重

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题