我有一个使用XML文件并生成JSON到MQ的spring boot Web服务,但是由于XSD模式中的标签以及它们创建的后续XMLElementRef对象,我很难解组XML。作为解决方法,我制作了一个自定义JAXB元素序列化程序,ObjectMapper使用该序列化程序将这些XML转换为JSON。
出现问题是因为Kafka的配置需要序列化程序。 config.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, null);
不起作用,JsonSerializer也不起作用,而字符串序列化程序将所有"
到\"
都转义了,这使使用这些消息变得很头疼。
我将如何生成这些JSON对象? kafka是否有简单的序列化器配置?
答案 0 :(得分:2)
执行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)
很显然,在消费者方面,您也需要解串器。