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

时间:2017-06-28 13:06:23

标签: 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,它将抛出一个未找到类的异常;然而,kafka-console-producer上的--value-serializer not.a.real.class什么也没做。

在JAVA API中的生产者上设置这些值,可以很好地工作(如果我输入废话作为序列化程序类,则会抛出异常),但在使用kafka-console-producer时则不会。

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

kafka-console-producer --broker-list IPADDRESS:9092 --topic TOPIC --property value.serializer=org.apache.kafka.common.serialization.IntegerSerializer

相关消费者:

kafka-console-consumer --bootstrap-server IPADDRESS:9092 --topic TOPIC  --property value.deserializer=org.apache.kafka.common.serialization.IntegerDeserializer

有没有人设法使用命令行工具?有什么明显的东西我不见了吗?

1 个答案:

答案 0 :(得分:4)

这是控制台生产者中的known bug。您可以通过将--old-producer选项传递给工具来解决此问题。