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

kafka-console-producer ignores value serializer?

我需要更改我的 Kafka 设置中的值 serializer/deserializer(出于测试目的,我一直在使用 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 它将抛出 class not found 异常;但是 --value-serializer not.a.real.class 在 kafka-console-producer 上什么都不做。

在 JAVA API 中对生产者设置这些值,效果很好(如果我输入废话作为序列化器 class 会抛出异常)但在使用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

有没有人设法使用命令行工具来解决这个问题?有什么明显的我想念的吗?

这是控制台制作人中的known bug。您可以通过将 --old-producer 选项传递给该工具来解决它。