Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mendapatkan Offset Kumpulan Pengguna dalam Go dengan Kafka 10?

Bagaimana untuk Mendapatkan Offset Kumpulan Pengguna dalam Go dengan Kafka 10?

Barbara Streisand
Barbara Streisandasal
2024-10-30 06:17:02715semak imbas

How to Retrieve Consumer Group Offsets in Go with Kafka 10?

Mendapatkan semula Offset Kumpulan Pengguna dalam Go with Kafka 10

Dengan keluaran Kafka 10, perpustakaan Go Kafka (sarama) kini menyediakan pengguna keupayaan kumpulan tanpa bergantung kepada perpustakaan luar. Ini menimbulkan persoalan tentang cara mendapatkan semula offset mesej semasa yang sedang diproses oleh kumpulan pengguna.

Penyelesaian

Untuk mendapatkan offset kumpulan pengguna, ikut langkah berikut:

  1. Melaksanakan Struktur Maklumat Kumpulan Pengguna:

    <code class="go">type gcInfo struct {
        offset int64
    }</code>
  2. Buat Pengendali Maklumat Kumpulan Pengguna:

    <code class="go">func (g *gcInfo) ConsumeClaim(_ sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error {
        g.offset = claim.InitialOffset()
        return nil
    }</code>
  3. Konfigurasikan dan Cipta Kumpulan Pengguna:

    <code class="go">config := sarama.NewConfig()
    config.Consumer.Offsets.AutoCommit.Enable = false
    client, err := sarama.NewConsumerGroup(strings.Split(brokers, ","), groupName, config)</code>
  4. Gunakan Mesej Dalam Kumpulan:

    <code class="go">info := gcInfo{}
    if err := client.Consume(ctx, []string{topic}, &amp;info); err != nil {
        return 0, err
    }</code>
  5. Dapatkan Offset:

    <code class="go">return info.offset, nil</code>

Dengan ini pelaksanaan, anda boleh mendapatkan semula kumpulan pengguna mengimbangi untuk partition dan topik tertentu pada bila-bila masa.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Offset Kumpulan Pengguna dalam Go dengan Kafka 10?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn