У меня есть вариант использования, когда мне нужно отправлять сообщения о ключевом значении с помощью Kafka Console Producer. Итак, как добиться этого с помощью команды Kafka Console Producer
?
Как отправлять сообщения о ключах и значениях с помощью производителя консоли kafka
Ответы (2)
Я нашел решение после некоторых исследований, и решение здесь.
команда kafka-console-producer
kafka-console-producer.sh --broker-list localhost:9092 --topic topic-name --property "parse.key=true" --property "key.separator=:"
После выполнения этой команды вы войдете в консоль производителя и оттуда сможете отправлять сообщения о ключах и значениях.
Например
key1:value1
key2:value2
key3:value3
Для большей ясности я привожу здесь образец сообщения «ключ-значение», где emp_info
— это ключ, а JSON object
— это значение.
emp_info: {"emp_id":100,"first_name":"Keshav","last_name":"Lodhi","designation":"DataEngineer"}
Примечание. Простая отправка строк текста приведет к сообщениям с ключами null
. Чтобы отправлять сообщения с обоими keys and values
, вы должны установить свойства parse.key
и key.separator
в командной строке при запуске производителя.
"
, окружающие параметры --property
, обязательны только в том случае, если вы хотите использовать специальный символ в качестве значения свойства. В моем случае я хотел использовать |
как key.separator
, и я мог заставить его работать только так: --property "key.separator=|"
. Спасибо за этот ответ.
- person Alex MM; 13.03.2021
По умолчанию производитель не заботится о разделе темы, в который записываются сообщения, и справедливо распределяет сообщения по всем разделам темы. Производитель выбирает раздел на основе хэша ключа записи или в циклическом режиме, если у записи нет ключа.
Kafka использует ключ для указания целевого раздела. Стратегия по умолчанию
заключается в выборе раздела на основе хэша ключа или использовании алгоритма циклического перебора, если ключ имеет значение null.Kafka работает с парами ключ-значение, если ключ не указан, он будет считаться по умолчанию нулевым, а раздел будет идентифицирован как циклический.
Если мы указываем ключ, сообщения/записи с одним и тем же ключом попадают в один и тот же раздел.
Чтобы включить отправку полных пар ключ-значение из командной строки, нам нужно использовать два свойства, как показано ниже:
характеристики
parse.key : если true — ключ обязателен, по умолчанию он установлен как false.
key.separator: как показано ниже
Примеры:
- ключ.разделитель=,
- ключ.разделитель=-
- ключ.разделитель=:
Команда Kafka Console Producer
kafka-console-producer --broker-list MY-KAFKA:29092 --topic kafka-prod --property parse.key=true --property key.separator=,
Ссылка: https://shashirl9.medium.com/kafka-producer-internals-d971ac582688< /а>