gpt4 book ai didi

go - 使用 kafka go 读取 __consumer_offsets

转载 作者:数据小太阳 更新时间:2023-10-29 03:19:13 24 4
gpt4 key购买 nike

我想使用这个库阅读主题 __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()

我认为除非需要,否则分区选择在用户级别应该是透明的。我错了吗?

有没有办法不管消息在哪个分区都可以从主题中读取?或者换句话说,从所有分区读取?

最佳答案

使用consumer group API,不需要给分区。

https://github.com/segmentio/kafka-go#consumer-groups

// GroupID holds the optional consumer group id.  If GroupID is specified, then
// Partition should NOT be specified e.g. 0
GroupID string


// Partition to read messages from. Either Partition or GroupID may
// be assigned, but not both
Partition int

https://godoc.org/github.com/segmentio/kafka-go#ReaderConfig

关于go - 使用 kafka go 读取 __consumer_offsets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56545778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com