如何从Kafka主题检索最新消息

时间:2019-01-14 11:47:53

标签: java apache-kafka

我只是Kafka的新手,我有一个问题:

我在Kafka中有主题'A',我启动Spring引导应用程序,并使用MessageChannel将一些消息发送到主题'A',然后我停止了应用程序。

无论如何,当我再次启动应用程序时,是否可以获得我发送给主题“ A”的最新消息(不是所有消息)?我已经搜索了所有解决方案,但是它们并没有太大帮助,如果我仅发送新消息,它总是立即收到消息。如果您有可运行的代码,请分享,我非常感谢:(

    // Start application


    // Get latest message in topic 'A' then do some LOGIC
    if (exist latest message) {
          //Print latest message
    }

1 个答案:

答案 0 :(得分:1)

您的消费者存储其偏移量(即最后读取的位置)。重新启动后,他们将从这一点继续阅读。此行为是设计使然。

当由于某种原因(例如,这是一个新的消费者组或偏移量已过期)而尚未得知此特定使用者组的偏移量时,将使用偏移量重置属性,但是仍然有两个选择-a)重新读取从头开始的一切b)开始收听新消息,而忘记了以前的所有内容。

hacky 种方法可以实现您所描述的内容,但是它们并不直接,也不推荐使用(一种琐碎的方法:消费者消息,而只是跳过它们直到到达分区EOF)

也许Kafka不是解决此问题的正确工具。