Как отправить 1 сообщение Kafka с помощью ключа? - PullRequest
1 голос
/ 04 августа 2020

Я использую эту команду: bin/kafka-console-producer.sh --bootstrap-server url --topic Notifications --property "parse.key=true" --property "key.separator=:"

Я ввожу эту команду и ввожу:

1: {"producer": 4, "message": {"created_date": "2020-08-04 15:03:19.063196"}}

Затем он немедленно ожидает вторую строку. Но я хочу отправить только одно сообщение, поэтому снова нажимаю Enter и получаю

org.apache.kafka.common.KafkaException: No key found on line 2: q at kafka.tools.ConsoleProducer$LineMessageReader.readMessage(ConsoleProducer.scala:289) at kafka.tools.ConsoleProducer$.main(ConsoleProducer.scala:51) at kafka.tools.ConsoleProducer.main(ConsoleProducer.scala)

1 Ответ

1 голос
/ 05 августа 2020

Я думаю, что сообщение действительно отправлено. kafka-console-producer принимает ввод построчно. Каждая строка (когда вы вводите символ новой строки, нажимая [Enter]) отправляет сообщение в topi c. После этого kafka-console-producer продолжает ждать следующего ввода, если вы отправите больше сообщений. Однако, поскольку для следующего ввода вы пытаетесь отправить пустую строку, она действительно не анализируется, и возникает ошибка. Однако эта ошибка относится только ко второй записи. Первое сообщение должно быть, как правило, уже отправлено к тому времени.

Как @Patrick Kelly предлагает в комментариях, вы можете подтвердить это предположение, запустив потребителя на рассматриваемом topi c и посмотреть, что там. Например, введите команду kafka-console-consumer при вводе сообщений в подсказке kafka-console-producer.

...