繁体   English   中英

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

[英]How to get only the latest message of a Kafka topic?

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

我试图将消息保存在列表中,但它并没有真正解决

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

事实上,做你想做的事情的唯一方法是让一个主题具有单个分区并将max.poll.records设置为一个。

否则,没有办法,因为最后一条消息没有意义。 任何输入消息都可以推送到不同的分区,并且您有一些与主题所具有的分区数相关的最后消息。

您可以使用名为Log Compaction的内容 ,它将使用相同的密钥“截断”消息。 因此,当您使用相同的密钥发送邮件时,您将只获得该密钥的最后一条消息/值。 默认情况下启用此功能。 当你发送消息1,1,2,1,2,3,1,2,3,4并想要将它们读为1,2,3,4时,你给消息提供相同的密钥,这些密钥应该被覆盖彼此相关(因此所有1条消息都获得相同的密钥,所有2条消息都获得相同的密钥,...)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM