[英]How to retrieve lastest message from Kafka topic
我只是 Kafka 的新手,我有一个问题:
我在 Kafka 中有主题“A”,我启动 Spring Boot 应用程序并使用 MessageChannel 向主题“A”发送一些消息,然后我停止应用程序。
无论如何,当我再次启动应用程序时,是否可以获得我发送到主题“A”(并非所有消息)的最新消息? 我已经搜索了所有解决方案,但它们对我没有太大帮助,如果我只发送新消息,它总是会立即收到消息。 如果您有可运行的代码,请分享,我非常感谢:(
// Start application
// Get latest message in topic 'A' then do some LOGIC
if (exist latest message) {
//Print latest message
}
您的使用者存储其偏移量(即最后读取的位置)。 重新启动后,他们将从这一点继续阅读。 此行为是设计使然。
当由于某种原因(例如,这是一个新的消费组或偏移量已过期)而尚未得知此特定使用者组的偏移量时,将使用偏移量重置属性,但是通常还是有两个选择-a)从开始b)开始收听新消息,忘记之前的所有内容。
有哈克的方式来实现你所描述的东西,但他们并不简单,不推荐使用(是小事一桩:直到你到达分区EOF消费者的消息,而只是跳过它们)
也许仅仅是Kafka不是解决此问题的正确工具。
一种选择可能是结合@saabeilin所说的“重新开始阅读所有内容”以及Log Compaction 。
如果配置正确,日志将被压缩,仅保留最后一个ID,因此重新读取操作将导致仅发送最后一条消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.