Указание нулевого раздела в производителе Kafka

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 даст ожидаемое поведение