java #apache-kafka #kafka-producer-api
#java #apache-kafka #kafka-producer-api
Вопрос:
API Kafka ProducerRecord имеет несколько разных конструкторов.
Я хочу иметь возможность указывать тему, временную метку, ключ и значение; но не раздел.
Ближайший вариант, который я вижу, следующий, но он заставляет меня указывать номер раздела:
public ProducerRecord(String topic, Integer partition, Long timestamp, K key, V value)
Можно ли просто поместить null
туда, чтобы затем использовать стандартный алгоритм разделения на основе ключа; или это будет иметь нежелательные побочные эффекты?
Комментарии:
1. Что происходит, когда вы пытаетесь указать null?
Ответ №1:
В документации Kafka говорится:
Если указан допустимый номер раздела, этот раздел будет использоваться при отправке записи. Если раздел не указан, но присутствует ключ, раздел будет выбран с использованием хэша ключа. Если ни ключа, ни раздела нет, раздел будет назначен циклическим способом.
Конструкторы, которые не позволяют указывать раздел, также передают null в этот параметр внутренне; поэтому использование null даст ожидаемое поведение