Встречается на 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()` для автоматического балансирования в группе.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы