Heim  >  Artikel  >  Backend-Entwicklung  >  **Wie erhält man Verbrauchergruppenausgleiche in Golang Kafka 10?**

**Wie erhält man Verbrauchergruppenausgleiche in Golang Kafka 10?**

DDD
DDDOriginal
2024-10-25 10:51:02871Durchsuche

**How to Get Consumer Group Offsets in Golang Kafka 10?**

Vergleiche für Verbrauchergruppen in Golang Kafka 10 erhalten

Mit der Einführung der Unterstützung von Verbrauchergruppen in Golangs Kafka-Bibliothek (Sarama) in Kafka 10, Entwickler haben jetzt Zugriff auf verbrauchergruppenbezogene Funktionen, ohne auf externe Bibliotheken angewiesen zu sein. Eine häufige Aufgabe ist das Abrufen des aktuellen Nachrichtenoffsets, das von einer Verbrauchergruppe verarbeitet wird. Bisher war hierfür der Einsatz von Zookeeper-basierten Lösungen wie Kazoo-go erforderlich. Mit Sarama-cluster kann dies nun durch den folgenden Code erreicht werden:

<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>

Das obige ist der detaillierte Inhalt von**Wie erhält man Verbrauchergruppenausgleiche in Golang Kafka 10?**. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn