kafka-console-producer 忽略值序列化程序?

lat*_*des 5 apache-kafka kafka-producer-api

我需要在我的 Kafka 设置中更改值序列化器/反序列化器(出于测试目的,我一直在使用 IntegerSerializer/IntegerDeserializer)。使用 JAVA API,它完全按预期工作;但是,当使用控制台工具时,它似乎无法正常工作。

我所做的所有故障排除使我得出一个结论:似乎 kafka-console-producer 忽略了 Serializer 选项。我已经尝试过--property value.serializer--producer-property value.serializer--value-serializer在带有--producer.config参数的配置中设置它。

它不仅无法将数据序列化为整数,它甚至不在乎我是否输入无意义作为参数值。使用 kafka-console-consumer(与它的 IntegerDeserializer 完美配合),如果我输入--value-deserializer not.a.real.class它会抛出一个未找到类的异常;但是--value-serializer not.a.real.class在 kafka-console-producer 上,什么都不做。

在 JAVA API 中的生产者上设置这些值,效果很好(如果我输入无意义作为序列化器类,则会抛出异常),但在使用 kafka-console-producer 时则不然。

这是我尝试运行控制台生产者的方法之一的示例:

kafka-console-producer --broker-list IPADDRESS:9092 --topic TOPIC --property value.serializer=org.apache.kafka.common.serialization.IntegerSerializer
Run Code Online (Sandbox Code Playgroud)

以及相关消费者:

kafka-console-consumer --bootstrap-server IPADDRESS:9092 --topic TOPIC  --property value.deserializer=org.apache.kafka.common.serialization.IntegerDeserializer
Run Code Online (Sandbox Code Playgroud)

有没有人设法使用命令行工具使其工作?有什么明显的我遗漏了吗?

小智 6

这是控制台生产者中的一个已知错误。您可以通过将--old-producer选项传递给工具来解决它。

  • 我试图用谷歌搜索这个,但找不到它工作的例子。JIRA 是 2015 年的,令人失望。谢谢你。 (2认同)