现在,Golang Kafka库(sarama)提供了消费者群体功能,而没有任何外部库帮助kafka 10.如何在任何给定时间让消费者群体处理当前消息偏移?
之前我使用kazoo-go(https://github.com/wvanbergen/kazoo-go)来获取我的消费者群组消息偏移量,因为它存储在Zookeeper中。现在我使用sarama-cluster(https://github.com/bsm/sarama-cluster),我不确定使用哪个API来获取我的消费者组消息偏移量。
答案 0 :(得分:0)
我也在与Sarama和Kafka合作,以取消主题。
您可以使用以下代码获得偏移量。
package main
import (
"gopkg.in/Shopify/sarama"
"fmt"
)
func main(){
client , err := sarama.Client([]string{"localhost:9092"},nil) // I am not giving any configuration
if err != nil {
panic(err)
}
lastoffset, err := client.GetOffset("topic-test",0,sarama.OffsetNewest)
if err != nil {
panic(err)
}
fmt.Println("Last Commited Offset ",lastoffset)
}
如果这是您正在寻找的答案以及是否有帮助,请告诉我。
答案 1 :(得分:0)
在幕后,consumerGroupSession
结构使用 PartitionOffsetManager
到 get next offset:
if pom := s.offsets.findPOM(topic, partition); pom != nil {
offset, _ = pom.NextOffset()
}
这是 pom.NextOffset() 的文档。
当 consumerGroupSession
通过 consumerGroupClaim
方法构造 newConsumerGroupClaim()
结构体时,它会将 pom.NextOffset()
返回的偏移量作为 offset
参数传递。您可以稍后通过 claim.InitialOffset()
访问它。开始使用消息后,您可以使用 message.Offset
的当前处理的消息。
不幸的是,无法从 consumerGroupSession.offsets.findPOM()
方法访问 ConsumerGroupHandler.ConsumeClaim(session sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim)
,因为它接收会话作为 ConsumerGroupSession
接口,而不是作为 consumerGroupSession
结构。所以 offsets 变量是私有的,不可访问。
因此我们无法真正访问 NextOffset()
方法,该方法正是 OP 想要的。