Sobes.tech
Назад к вопросам
Middle
4

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

Компании, где спрашивали
СБЕР Корус

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

sobes.tech AI

В 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.