Встречается на 2% собеседований по Java
Как сделать так, чтобы все сообщения по одному клиенту попали в одну партицию в Kafka
Для гарантированного попадания всех сообщений клиента в одну партицию Kafka нужно использовать ключ сообщения (message key). Kafka гарантирует, что сообщения с одинаковым ключом всегда попадут в одну партицию.
Пример Producer на Java:
java
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(props);
// Используем clientId в качестве ключа
String clientId = "client123";
String message = "Сообщение для клиента";
ProducerRecord<String, String> record =
new ProducerRecord<>("topic_name", clientId, message);
producer.send(record);
producer.close();
text
Важные моменты:
1. Ключ должен быть уникальным для каждого клиента (например, clientId)
2. Количество партиций в топике должно быть фиксированным - изменение приведет к перераспределению сообщений
3. Для сложных ключей нужно правильно реализовать hashCode()
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы