Скажем, например, у меня есть этот POJO сотрудника:
public class Employee {
private int id;
private String name;
}
И я хочу отправить это в тему Kafka с несколькими разделами.Поэтому я могу использовать поле id
в качестве ключа для выбора правильного раздела.Я могу создать ProducerRecord
, как показано ниже:
ProducerRecord<Integer, Employee> record = new ProducerRecord<>("topic", employee.getId(), employee);
Это отправит сообщение Kafka с ключом в качестве поля заголовка и employee
в качестве полезной нагрузки.
У меня вопрос, если ключ уже включен в полезную нагрузку и является большой частью самой полезной нагрузки, было бы лучше рассчитать номер раздела вручную и отправить его таким образом?
Значит, это будет выглядеть примерно так:
int partition = defualtPartitioner.partition(...);
ProducerRecord<Integer, Employee> record = new ProducerRecord<>("topic", partition, null, employee);
И таким образом вы пропустите ключ из сообщения?