Встречается на 2% собеседований по Java

Обеспечишь ли бесперебойную работу двух Consumer с одним Topic путем указания партиции для чтения у Consumer

Да, можно обеспечить бесперебойную работу двух Consumer, читающих один Topic, путем назначения каждой партиции отдельному Consumer. В Kafka партиции Topic распределяются между Consumer в Consumer Group. Если у Topic две партиции, каждый Consumer получит свою партицию.

Пример на Java с KafkaConsumer:

java
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "test-group");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

KafkaConsumer<String, String> consumer1 = new KafkaConsumer<>(props);
KafkaConsumer<String, String> consumer2 = new KafkaConsumer<>(props);

// Consumer1 подписывается на партицию 0
consumer1.assign(Collections.singletonList(new TopicPartition("my-topic", 0)));

// Consumer2 подписывается на партицию 1
consumer2.assign(Collections.singletonList(new TopicPartition("my-topic", 1)));

text

Важно:
- Если партиций больше, чем Consumer, часть Consumer получит несколько партиций.
- Если Consumer больше, чем партиций, часть Consumer останется без работы.
- Используйте `assign()` для ручного назначения партиций или `subscribe()` для автоматического балансирования в группе.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы