Назад к вопросам
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.