Проверяет понимание возможности явного указания партиции при отправке сообщений в Kafka.
В Apache Kafka продюсер может отправлять сообщения в определённую партицию топика. Это даёт контроль над порядком сообщений и распределением нагрузки. По умолчанию, если партиция не указана, Kafka использует хеш от ключа сообщения для выбора партиции, что гарантирует, что все сообщения с одинаковым ключом попадут в одну партицию. Если ключ не задан, сообщения распределяются по партициям в режиме round-robin.
ProducerRecord можно передать целочисленный идентификатор партиции.Partitioner, для нестандартной логики распределения.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);
// Явное указание партиции 2
ProducerRecord<String, String> record = new ProducerRecord<>("my-topic", 2, "key1", "value1");
producer.send(record);
// Использование ключа (партиция будет вычислена автоматически)
ProducerRecord<String, String> recordWithKey = new ProducerRecord<>("my-topic", "user123", "data");
producer.send(recordWithKey);
producer.close();Явное указание партиции применяется, когда нужно гарантировать строгий порядок обработки сообщений для определённого набора данных, например, для событий одного пользователя. Также это помогает балансировать нагрузку, направляя данные в конкретные партиции для последующей обработки разными потребителями.
Вывод: возможность записи в конкретную партицию даёт гибкость в управлении порядком и распределением сообщений, что критично для сценариев, требующих упорядоченной обработки или изоляции данных.