Middle
42
Kafka: как сделать так, чтобы одно сообщение из топика прочитали два разных сервиса?
Сұралған компаниялар
RedLab
AI-дан жауап
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"));
// далее обработка сообщений
Таким образом, каждый сервис получает копию всех сообщений из топика.