繁体   English   中英

Spring / Avro - 使用融合模式注册表

[英]Spring / Avro - using confluent schema registry

我正在尝试使用 Confluent schema-registry 并按照我在 Github 中找到的一些示例( https://github.com/gAmUssA/springboot-kafka-avro )为我工作。

当消费者和生产者与其工作模型共享相同的命名空间时。

当使用者位于具有不同命名空间但具有相同类(名称和属性)的不同项目中时,它不工作。

Confluent Avro 反序列化器可以使用正确的值反序列化为 GenericData$Record 类,但无法将其转换为实际对象。

我正在尝试这个:


@Data
@AllArgsConstructor
public class User {
    String name;
    int age;
}
...

@KafkaListener(topics = "users", groupId = "group_id")
public void consume(ConsumerRecord<String, User> record) {
    log.info(String.format("Consumed message -> %s", record.value().getName()));
}

上面的代码在铸造问题上失败。

当我将 specific.avro.reader=true 添加到道具时,它也失败了。

这不是模式注册表的全部目的,成为一个中央存储库,以便数据可以通过不同项目甚至不同语言(python、java、.net 等)中的模式反序列化?

我错过了什么?

问题是您的 User 类不是 Avro 类。

您应该使用 Avro Maven / Gradle 插件来生成您的类,而不是使用 Lombok,并且命名空间和完整模式确实需要对齐。 我发现最好的管理方法是开发和发布与实际 kafka 代码完全分开的模型

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM