Sobes.tech
Назад к вопросам
Senior
6

Зачем нужна Consumer Group? Как сделать broadcast в Kafka?

Компании, где спрашивали
МТСМТС

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

sobes.tech AI

Consumer Group в Kafka нужна для масштабирования и балансировки нагрузки при потреблении сообщений. Все потребители в одной группе совместно читают данные из топика, при этом каждый партиция топика назначается ровно одному потребителю из группы. Это обеспечивает параллельную обработку и гарантирует, что каждое сообщение будет обработано ровно одним потребителем.

Broadcast (рассылка каждому потребителю всех сообщений) в Kafka не реализуется напрямую, так как Kafka ориентирована на модель с разделением нагрузки. Чтобы сделать broadcast, нужно, чтобы каждый потребитель был в своей уникальной Consumer Group. Тогда каждый из них получит все сообщения топика независимо от других.

Пример:

  • Топик с 3 партициями
  • 3 потребителя в одной группе — каждый читает свою партицию
  • 3 потребителя в 3 разных группах — каждый получит все сообщения из всех партиций (broadcast)
// Создаем потребителя с уникальной группой для broadcast
Properties props = new Properties();
props.put("group.id", "unique-group-id");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Arrays.asList("topic-name"));
// Каждый такой потребитель получит все сообщения