如何在不使用kafka的jsonserializer的情况下向kafka生成json对象

hjzp0vay  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(330)

我有一个springbootweb服务,它使用xml文件,向mq生成json,但是由于xsd模式中的标记以及它们创建的后续xmlementref对象,我很难将xmls解组。作为解决方法,我制作了一个定制的jaxb元素序列化程序,objectmapper使用它将这些xml转换为json。
问题在于kafka的配置需要序列化程序。 config.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, null); 当字符串序列化程序转义所有 "\" 这使得消费这些信息相当头疼。
如何生成这些json对象?Kafka有简单的序列化程序配置吗?

bxjv4tth

bxjv4tth1#

像这样做 config.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, null) 永远不会工作,你需要告诉Kafka如何对待你提供的对象。
您可以显式地将自己的数据序列化为字节数组,然后使用自己的序列化程序实现推送字节数组。
你需要实施 org.apache.kafka.common.serialization.Serializer 接口,其中最有趣的方法类似于:

@Override
byte[] serialize(String topic, YourXmlClass data) {
    return data.toByteArray(); // or something richer
}

然后你就可以通过 config.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, YourSerializerClass.class) 显然,在用户端也需要反序列化程序。

相关问题