生产者和消费者 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。
生产者端的架构:
{
"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。