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

oxf4rvwz  于 2021-06-06  发布在  Kafka
关注(0)|答案(2)|浏览(345)

有没有一种方法可以分解消息,以便只使用最新的消息?
我试着把信息保存在一个列表中,但没有成功

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

xzlaal3s

xzlaal3s1#

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

m2xkgtsf

m2xkgtsf2#

事实上,唯一的方法就是使用一个单独分区的主题,并将max.poll.records设置为一。
否则,就没有办法解释了,因为最后一条消息没有意义。任何输入消息都可以被推送到不同的分区中,并且您有一些与主题的分区数相关的最后消息。

相关问题