Назад к вопросам
Middle
6
Kafka: как сделать так, чтобы одно сообщение из топика прочитали два разных сервиса?
Компании, где спрашивали
RedLab
Ответ от нейросети
sobes.tech AI
Чтобы одно сообщение из Kafka топика прочитали два разных сервиса, нужно, чтобы эти сервисы были в разных группах потребителей (consumer groups). В Kafka сообщения доставляются каждому consumer group независимо, а внутри группы — каждому сообщению соответствует один потребитель.
Пример:
- Сервис A — consumer group "serviceA-group"
- Сервис B — consumer group "serviceB-group"
Оба сервиса подписываются на один и тот же топик, но так как они в разных группах, каждый получит все сообщения из топика.
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "serviceA-group"); // или "serviceB-group" для второго сервиса
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Collections.singletonList("your-topic"));
// далее обработка сообщений
Таким образом, каждый сервис получает копию всех сообщений из топика.