【发布时间】:2017-12-01 20:55:07
【问题描述】:
我需要在我的 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
有没有人设法使用命令行工具来完成这项工作?我有什么明显的遗漏吗?
【问题讨论】:
标签: apache-kafka kafka-producer-api