我正在阅读Kafka主题,并且提交了读取的偏移量。
我能以某种方式使用相同的group.id而不寻找suggested here的特定分区,从头到尾重新阅读整个主题吗?
使用Kafka 1.1 我的伪代码:
var config = new Dictionary<string, object>
{
{ "group.id", "NCC1"},
...
{ "enable.auto.commit", "false"},
{ "default.topic.config", new Dictionary<string, object>
{
{ "auto.offset.reset", "earliest" }
}
}
};
using (var consumer = new Consumer<string, string>(config, new StringDeserializer(Encoding.UTF8), new StringDeserializer(Encoding.UTF8)))
{
consumer.Subscribe(new string[] { topic });
consumer.OnMessage += (_, msg) =>
{
// DO SOMETHING
onsumer.CommitAsync(msg);
};
答案 0 :(得分:0)
Kafka允许您重置特定主题和组ID的偏移量。重播的可能性实际上是Kafka的卖点之一。
您可以使用kafka-streams-application-reset
命令行工具作为documented here来做到这一点。
另一种方法是使用in this blog中所述的kafka-consumer-groups
命令行工具。如果您使用Windows,则另一种方法可能会很有趣,因为没有提供kafka-streams-application-reset.sh
的等效批处理文件。
很明显,只要事件仍在主题中,就可以向后移动偏移量。从主题中删除的事件无法重播。
编辑
我认为您的问题与this one
非常相似答案 1 :(得分:0)
您可以使用kafka-consumer-group重置现有组ID的偏移量。
kafka-consumer-groups --bootstrap-server <kafkahost:port> --group <group_id> --topic <topic_name>
--reset-offsets --to-earliest --execute
它将最早重置给定主题和group.id的偏移量。
您可以在此处看到更多选项: