Как сделать так, чтобы Kafka отправила сообщение всем подписчикам?

В Apache Kafka сообщения отправляются в топики, а подписчики (консьюмеры) читают сообщения из этих топиков. Чтобы сообщение было доставлено всем подписчикам, нужно правильно настроить группы потребителей:

Короткий ответ

Что ответить на собеседовании

В Apache Kafka сообщения отправляются в топики, а подписчики (консьюмеры) читают сообщения из этих топиков. Чтобы сообщение было доставлено всем подписчикам, нужно правильно настроить группы потребителей:

Подробный разбор

Ответ с пояснениями

В Apache Kafka сообщения отправляются в топики, а подписчики (консьюмеры) читают сообщения из этих топиков. Чтобы сообщение было доставлено всем подписчикам, нужно правильно настроить группы потребителей:

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

Таким образом, чтобы отправить сообщение всем подписчикам, нужно, чтобы у каждого был уникальный consumer group id. Тогда Kafka доставит копии сообщения в каждую группу.

Пример на Java:

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "unique-group-id-1"); // уникальный для каждого подписчика
// ...
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Collections.singletonList("topic-name"));

Повторите для каждого подписчика с разным group.id.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее