猿问

如何只获取Kafka主题的最新消息?

有没有办法分解消息,以便只使用最新的消息?


我试图将消息保存在列表中,但没有成功


var consumer = new Consumer(new ConsumerOptions(topic, router));


foreach (var message in consumer.Consume())

{

    Console.WriteLine(Encoding.UTF8.GetString(message.Value));

}

输出应为:1、2、3、4


输出为:1、1、2、1、2、3、1、2、3、4


慕桂英546537
浏览 267回答 2
2回答

湖上湖

您可以使用称为日志压缩的东西,它将使用相同的密钥“截断”消息。因此,当您使用相同的密钥发送消息时,您将仅获得该密钥的最后一条消息/值。默认情况下启用此功能。当您发送消息1, 1, 2, 1, 2, 3, 1, 2, 3, 4并且您希望将它们读取为1, 2, 3, 4时,您为消息提供了相同的密钥,这些密钥应该被覆盖彼此(因此所有1条消息都获得相同的密钥,所有2条消息都获得相同的密钥,...)。

鸿蒙传说

事实上,做你想做的唯一方法是有一个单一分区的主题并将max.poll.records设置为一个。否则,就没有办法了,因为最后一条消息没有意义。任何输入消息都可以被推送到不同的分区中,并且您有一些与主题所具有的分区数相关的最后消息。
随时随地看视频慕课网APP
我要回答