超出保留期的主题的行为是什么?是否可以在他们的保留策略期后给他们写信?我一直试图在confluent kafka dotnet(一个.net库)上给他们写信,但是当我运行一个消费者时,我没有看到任何消息流通过。分区的值只是一个空字符串数组。是否可以在保留时间之外写入主题,或者该主题是否被禁用?
using (var consumer = new Consumer(config))
{
consumer.Assign(new List<TopicPartitionOffset> { new TopicPartitionOffset(topicName, 0, 0) });
while (true)
{
Message msg;
if (consumer.Consume(out msg))
{
Console.WriteLine("Topic: {0} Response: P{1},O{1} :{3}", msg.Topic, msg.Partition, msg.TopicPartitionOffset, Encoding.UTF8.GetString(msg.Value));
}
}
}
1条答案
按热度按时间nkcskrwz1#
Kafka的保留期适用于过去的事件,而不是你现在正在写的事件。无论您的保留策略是什么,您都应该能够看到新邮件。
示例:在7月1日午夜创建一个保留24小时的主题。7月1日23:50,您在一整天中编写的所有数据仍然存在。在7月2日01:00,将只存储7月1日凌晨1:00之后写入的数据(最近24小时),较早的事件将被“清除”。
如果您的消费者看不到新消息,那么它是以下两种消息之一:1。你的信息被写了吗(Kafka有一个文件转储实用程序来帮助检查)2。你的消费者什么时候开始阅读?如果您的使用者从主题末尾开始,它可能会错过前面的消息。如果从开头开始,它将获取主题中的所有消息。“auto.offset.reset“配置控制这一点。”--如果您使用的是控制台使用者。