Kafka能够在保留期之后写一个主题

时间:2017-07-25 17:31:08

标签: c# apache-kafka confluent confluent-kafka

超出保留期限的主题的行为是什么?是否可以在保留期限后写信给他们?我一直试图在 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 个答案:

答案 0 :(得分:1)

卡夫卡的保留期适用于过去的事件,而不是您现在正在撰写的事件。无论您的保留政策是什么,您都应该能够看到新消息。

实施例: 在7月1日午夜创建一个24小时保留的主题。 7月1日23:50,你在一整天写的所有数据仍然存在。 在7月2日01:00,只存储在7月1日凌晨1点之后写入的数据(最后24小时),之前的事件被清除&#34;。

如果您的消费者无法看到新消息,那么它就是以下两种消息之一: 1.你的信息是否完整? (Kafka有一个文件转储实用程序来帮助检查) 2.您的消费者何时开始阅读?如果您的消费者在主题的末尾开始,它可能会错过先前的消息。如果它从头开始,它将获取主题中的所有消息。 &#34; auto.offset.reset&#34;配置控制这个。 &#34; - 从-开始&#34;如果您正在使用控制台消费者。