如何在不使用kafka的JsonSerializer的情况下向Kafka生成JSON对象

时间:2018-12-12 15:14:51

标签: json apache-kafka serializer

我有一个使用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是否有简单的序列化器配置?

1 个答案:

答案 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)

配置生产者

很显然,在消费者方面,您也需要解串器。