Встречается на 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()
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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