Назад к вопросам
Middle
124
questionbank

Что такое группа потребителей (consumer group) в Kafka?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech 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")
}