Golang Kafka 10에서 소비자 그룹 오프셋 가져오기
Kafka 10의 Golang Kafka 라이브러리(Sarama)에 소비자 그룹 지원이 도입되면서, 이제 개발자는 외부 라이브러리에 의존하지 않고도 소비자 그룹 관련 기능에 액세스할 수 있습니다. 일반적인 작업 중 하나는 소비자 그룹에서 처리 중인 현재 메시지 오프셋을 검색하는 것입니다. 이전에는 Kazoo-go와 같은 Zookeeper 기반 솔루션을 사용해야 했습니다. 이제 Sarama-cluster를 사용하면 다음 코드를 통해 이를 달성할 수 있습니다.
<code class="go">package main import ( "context" "log" "strings" "github.com/Shopify/sarama" ) func main() { groupName := "testgrp" topic := "topic_name" offset, err := GetCGOffset(context.Background(), "localhost:9092", groupName, topic) if err != nil { log.Fatal(err) } log.Printf("Consumer group %s offset for topic %s is: %d", groupName, topic, offset) } type gcInfo struct { offset int64 } func (g *gcInfo) Setup(sarama.ConsumerGroupSession) error { return nil } func (g *gcInfo) Cleanup(sarama.ConsumerGroupSession) error { return nil } func (g *gcInfo) ConsumeClaim(_ sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error { g.offset = claim.InitialOffset() return nil } func GetCGOffset(ctx context.Context, brokers, groupName, topic string) (int64, error) { config := sarama.NewConfig() config.Consumer.Offsets.AutoCommit.Enable = false // we're not going to update the consumer group offsets client, err := sarama.NewConsumerGroup(strings.Split(brokers, ","), groupName, config) if err != nil { return 0, err } info := gcInfo{} if err := client.Consume(ctx, []string{topic}, &info); err != nil { return 0, err } return info.offset, nil }</code>
위 내용은 **Golang Kafka 10에서 소비자 그룹 오프셋을 얻는 방법은 무엇입니까?**의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!