Sobes.tech
Middle

Cos'è un gruppo di consumatori in Kafka?

sobes.tech AI

Risposta dell'AI

Это набор потребителей, которые совместно обрабатывают сообщения из одной или нескольких тем. Каждый раздел темы может быть назначен только одному потребителю в группе. Это обеспечивает масштабирование и отказоустойчивость: если один потребитель выходит из строя, другие в группе могут взять на себя обработку его разделов. Kafka отслеживает "смещения" (offsets) для каждой группы потребителей отдельно, что позволяет разным группам читать сообщения из одной темы независимо друг от друга.

// Пример создания потребителя с указанием группы
package main

import (
	"fmt"
	"log"

	"github.com/Shopify/sarama" // Одна из популярных библиотек для Kafka
)

func main() {
	config := sarama.NewConfig()
	config.Consumer.Offsets.AutoCommit.Enable = true
	config.Consumer.Group.Session.Timeout = sarama.NewDuration(6 * 1000 * 1000 * 1000) // Таймаут сессии для группы
	config.Consumer.Group.Heartbeat.Interval = sarama.NewDuration(3 * 1000 * 1000 * 1000) // Интервал heartbeat

	consumer, err := sarama.NewConsumerGroup([]string{"localhost:9092"}, "my-consumer-group", config) // my-consumer-group - имя группы
	if err != nil {
		log.Fatalf("Failed to create consumer group: %v", err)
	}
	defer consumer.Close()

	// Здесь будет цикл для обработки сообщений из тем
	// ...
	fmt.Println("Consumer group created")
}