【问题标题】:Different Namespaces for Producer and Consumer Avro Schemas生产者和消费者 Avro 模式的不同命名空间
【发布时间】:2020-07-19 18:53:51
【问题描述】:

生产者端的架构:

{
  "type":"record",
  "name":"ClientIdentifier",
  "namespace":"namespace1",
  "fields":[
    {
      "name":"data",
      "type":"string"
    }
  ]
}

消费者端的架构:

{
  "type":"record",
  "name":"ClientIdentifier",
  "namespace":"namespace2",
  "fields":[
    {
      "name":"data",
      "type":"string"
    }
  ]
}

两者都有不同的命名空间。如何使它们相互兼容。
我正在使用生成的 avro 类中存在的编码器和解码器进行序列化和反序列化。


另外,我在 Spring Boot 的消费者中使用 @KafkaListener 注释。

【问题讨论】:

  • 我遇到了同样的问题。你能解决这种情况吗?
  • 我已经添加了答案。请看一看。

标签: spring-boot apache-kafka avro spring-kafka


【解决方案1】:

我发现在 Avro 生成的消息中使用编码器时,如果我们在消费者端有不同的命名空间,我们无法解码回来,因为它在内部使用命名空间的值。唯一的选择是在生产者端使用 GenericDatumWriter,在消费者端使用 GenericDatumReader。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 2018-10-10
    相关资源
    最近更新 更多