2017-06-28 34 views
0

我需要在我的Kafka设置(用于测试目的,我一直使用IntegerSerializer/IntegerDeserializer)中更改值序列化器/反序列化器。使用JAVA API,它可以像预期的那样工作。但是,当使用控制台工具时,它似乎不能正常工作。kafka-console-producer忽略值序列化程序?

我所做的所有问题解决都让我得出一个结论:似乎卡夫卡控制台生产者忽略了串行器选项。我试过--property value.serializer--producer-property value.serializer--value-serializer,并将其设置为--producer.config参数。

它不仅没有将数据序列化为一个整数,它甚至不关心我是否输入无意义作为参数值。如果我输入--value-deserializer not.a.real.class,那么它会抛出一个没有发现异常的类;如果我输入--value-deserializer not.a.real.class,它将抛出一个类未找到的异常;然而在kafka-console-producer上的--value-serializer not.a.real.class却什么都不做。

在JAVA API中将这些值设置在生产者中,完美地工作(并且如果我作为序列化程序类输入无意义时会抛出异常),但在使用kafka控制台生产者时不会发生异常。

这是方式之一的一个例子,我试图运行控制台制片人:

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 

有没有人设法用命令该工作线工具?有什么明显的我失踪了?

回答

2

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

+0

我试图谷歌这并找不到它的工作的例子。 JIRA从2015年开始,这令人失望。谢谢。 – latreides