生产者和消费者 Avro 模式的不同命名空间

Different Namespaces for Producer and Consumer Avro Schemas

生产者端的架构:

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

消费者端的架构:

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

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


此外,我在 spring 启动时在消费者中使用 @KafkaListener 注释。

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