当前,我使用AcknoledgingMessageListener通过spring-Kafka实现Kafka使用者。此实现可帮助我收听特定主题并通过手动确认处理消息。 我现在需要构建以下功能: 让我们假设,对于某些环境异常或通过此主题输入的不良数据,我需要从特定偏移量回放特定主题的数据。这将是一个手动触发器(主要是通过Java类的执行)。
如果我可以检索这些偏移量之间的消息并将其作为重播主题,以便新用户可以处理这些消息,从而使偏移量保持原始主题不变,那将是一个理想的选择。
所有这些要求都旨在围绕我们的Kafka功能构建弹性层。我需要所有这些都由一个单独的可执行类管理,该类可以手动触发以提供相关数据(如时间戳等)。此类应确定偏移量,然后搜索该偏移量,检索与这些偏移量相对应的消息,并将其发布到单独的主题。有人可以指出正确的方向吗?恐怕我会绕圈转。
和平, 番红花
答案 0 :(得分:0)
以便新用户可以处理这些消息,从而使偏移量保持原主题不变。
只需创建一个具有不同组ID(新使用者)的新侦听器容器,并在分配分区时使用ConsumerAwareRebalanceListener
(或ConsumerSeekAware
)执行查找即可。
Here is a sample CARL that seeks all assigned topics based on a timestamp.
您将需要某种机制来了解新使用者何时应停止使用(在什么时候可以stop()
新容器)。也许在新使用者上设置了max.poll.records=1
,这样他就不会预取失败点。
我不确定#3是什么意思。