【发布时间】:2019-10-25 23:57:56
【问题描述】:
我想使用这个库阅读主题__consumer_offsets:https://github.com/segmentio/kafka-go
我的问题是,除非我指定一个分区,否则似乎什么都不会发生。默认情况下这个主题有100个分区,查询kafka的分区列表然后循环读取它们似乎是不合理的,我希望库中有一个预先存在的方法来读取来自所有分区的消息在主题中。
目前以下工作,在我用kafkacat验证__consumer_offsets主题的分区15中有消息后:
r := kafka.NewReader(kafka.ReaderConfig{
Brokers: []string{"kafka:9092"},
Topic: "__consumer_offsets",
Partition: 15
})
r.SetOffset(0)
for {
m, err := r.ReadMessage(context.Background())
if err != nil {
log.Println("Error while trying to read message")
log.Fatal(err)
break
}
log.Printf("message at offset %d\n", m.Offset)
}
r.Close()
我认为分区选择应该在用户级别上是透明的,除非需要。我错了吗?
有没有办法从主题中读取消息,而不管消息在哪个分区中?或者换个说法,从所有分区中读取?
【问题讨论】:
标签: go apache-kafka