如何使用密钥发送 1 条 Kafka 消息?

How to send 1 Kafka message with a key?

我正在使用这个命令: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"}}

然后它立即期待第二行。但我只想发送 1 条消息,所以我再次按回车,得到

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)

我认为消息确实已发送。 kafka-console-producer 逐行接受输入。每一行(当您通过按 [Enter] 输入换行符时)都会向主题提交一条消息。之后 kafka-console-producer 继续等待下一次输入,如果您发送更多消息。但是,因为对于下一个输入,您尝试发送一个空字符串,它确实不会解析并产生错误。不过,此错误仅针对第二个条目。正常情况下,第一条消息到那时应该已经发送了。

正如@Patrick Kelly 在评论中建议的那样,您可以通过 运行 让消费者讨论相关主题并查看其中的内容来确认这一假设。例如,运行 kafka-console-consumer 同时在 kafka-console-producer 提示中输入消息。