【问题标题】:How to produce JSON object to Kafka without using kafka's JsonSerializer如何在不使用 kafka 的 JsonSerializer 的情况下向 Kafka 生成 JSON 对象
【发布时间】:2018-12-12 15:14:50
【问题描述】:

我有一个使用 XML 文件的 Spring Boot Web 服务,将 JSON 生成到 MQ,但是由于 XSD 架构中的标签和它们创建的后续 XMLElementRef 对象,我很难解组 XML。作为一种解决方法,我制作了一个自定义 JAXB 元素序列化程序,ObjectMapper 使用它来将这些 XML 转换为 JSON。

问题在于 Kafka 的配置需要序列化程序。 config.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, null); 不起作用,JsonSerializer 也不起作用,而字符串序列化程序将所有 " 转义为 \",这使得使用这些消息非常头疼。

我将如何生成这些 JSON 对象? kafka 有简单的序列化器配置吗?

【问题讨论】:

  • 如果您的字符串正在转义字符串和引号,则说明您的代码有其他问题。卡夫卡没有把那些放在那里

标签: json apache-kafka serialization


【解决方案1】:

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)配置生产者

显然,您在消费者端也需要反序列化器。

【讨论】:

    猜你喜欢
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    相关资源
    最近更新 更多