如何仅获取有关Kafka主题的最新消息?

时间:2019-04-20 20:22:21

标签: c# apache-kafka kafka-net

是否有一种方法可以分解消息,以便仅使用最新消息?

我试图将邮件保存在列表中,但实际上并没有解决

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

2 个答案:

答案 0 :(得分:0)

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

否则,将无法实现,因为最后一条消息没有意义。任何输入消息都可以推入不同的分区,并且相对于主题所具有的分区数,您还有一些最后的消息。

答案 1 :(得分:0)

您可以使用名为Log Compaction的东西,它将使用相同的密钥“截断”消息。因此,当您使用相同的键发送消息时,您将仅获得该键的最后一条消息/值。默认情况下启用此功能。发送邮件 1、1,2、1、2、3、1、2、3、4 时,您希望将其阅读为 1、2、3、4 您为消息赋予相同的密钥,该密钥应相互覆盖(因此,所有 1 消息均具有相同的密钥,所有 2 消息均具有相同的密钥,...)。