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:
Melaksanakan Struktur Maklumat Kumpulan Pengguna:
<code class="go">type gcInfo struct { offset int64 }</code>
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>
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>
Gunakan Mesej Dalam Kumpulan:
<code class="go">info := gcInfo{} if err := client.Consume(ctx, []string{topic}, &info); err != nil { return 0, err }</code>
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!