【发布时间】:2019-01-10 17:20:18
【问题描述】:
我有一个 Kafka 消费者,它订阅了以下主题 MY_TOPIC、MY_UNINTERESTED_TOPIC。
在下面的场景中,我对第二个主题不感兴趣,但我不得不提及它,因为如果我使用 auto.offset.reset 之类的东西配置它,它可能会影响所有主题。
在MY_TOPIC 主题上,我发布了不同类型的消息:MESSAGE_TYPE_A 和MESSAGE_TYPE_B。两条消息都是BaseKafkaMessage(自定义类)的实例,具有不同的属性。
现在我有兴趣仅找到 MESSAGE_TYPE_A 类型的最新消息。我该怎么做?
真正的场景是这样的:我在同一个主题上发布两种类型的消息。其中一个用于在每个对此主题和该消息感兴趣的消费者中准备一个本地缓存。如果消费者停止,当它重新加载时,它必须使用最新的MESSAGE_TYPE_A 重新初始化其缓存。 MESSAGE_TYPE_B 应该被忽略。我不想在 Kafka 上向数据提供者发送通知以再次发布数据,因为所有订阅者都会有很多不必要的工作要做。
我怎样才能获得这个?这可能吗?
我找到了https://docs.spring.io/spring-kafka/reference/htmlsingle/#seek,但我不确定这是否是我正在寻找的,或者是否有其他方法可以做到这一点。
【问题讨论】:
-
但是每当消费者重启时,它会拉取新数据对吗?那为什么还要担心
MESSAGE_TYPE_B,而auto.offset.reset这个属性如果是新的消费群会受到影响 -
@Deadpool 请看看 cricket_007 提供的答案以及我的评论
-
您对消费者组 ID 有任何了解吗?我真的不明白消费者在使用 sama group id 重新启动时如何从一开始就进行轮询? @tzortzik
-
欢迎使用帖子旁边的复选标记接受答案
标签: java apache-kafka kafka-consumer-api spring-kafka