有没有一种方法可以分解消息,以便只使用最新的消息?
我试着把信息保存在一个列表中,但没有成功
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条答案
按热度按时间xzlaal3s1#
您可以使用一种称为日志压缩的方法来“截断”具有相同密钥的消息。因此,当您使用同一密钥发送消息时,您将只获得该密钥的最后一条消息/值。默认情况下启用此功能。当您发送消息1、1、2、1、2、3、1、2、3、4并且您想将它们读作1、2、3、4时,您为消息提供了相同的密钥,这些密钥应该被彼此覆盖(因此所有1条消息都具有相同的密钥,所有2条消息都具有相同的密钥,…)。
m2xkgtsf2#
事实上,唯一的方法就是使用一个单独分区的主题,并将max.poll.records设置为一。
否则,就没有办法解释了,因为最后一条消息没有意义。任何输入消息都可以被推送到不同的分区中,并且您有一些与主题的分区数相关的最后消息。