是否有一种方法可以分解消息,以便仅使用最新消息?
我试图将邮件保存在列表中,但实际上并没有解决
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
答案 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 消息均具有相同的密钥,...)。