В чем разница между консьюмером и группой консьюмеров

«В чем разница между консьюмером и группой консьюмеров» — вопрос из категории Брокеры сообщений, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Группа консьюмеров (consumer group) — это набор консьюмеров, совместно обрабатывающих сообщения из одного или нескольких топиков. Каждый консьюмер в группе получает уникальную часть партиций, обеспечивая параллельную обработку и балансировку нагрузки.

Одиночный консьюмер обрабатывает все сообщения самостоятельно. Если он падает, обработка останавливается. В группе консьюмеров при выходе одного из участников его партиции автоматически перераспределяются между оставшимися.

Пример (Kafka):

// Одиночный консьюмер
consumer, _ := sarama.NewConsumer([]string{"localhost:9092"}, nil)
partitionConsumer, _ := consumer.ConsumePartition("topic", 0, sarama.OffsetNewest)

// Группа консьюмеров
config := sarama.NewConfig()
group, _ := sarama.NewConsumerGroup([]string{"localhost:9092"}, "group-id", config)

Группы используются для масштабирования и отказоустойчивости, одиночные консьюмеры — для простых сценариев.