当前位置: 首页 > 知识库问答 >
问题:

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

上官正志
2023-03-14

我正在尝试使用Confluent schema registry,下面是我在Github中找到的一些示例(https://github.com/gAmUssA/springboot-kafka-avro).

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

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

合流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()));
}

上述代码在铸造问题上失败。

当我添加特定时。阿夫罗。reader=忠实于道具,但它也失败了。

这难道不是模式注册中心的全部目的吗?它是一个中心repo,因此数据可以由不同项目甚至不同语言(python、java、net等)中的模式反序列化?

我错过了什么?

共有1个答案

呼延卓
2023-03-14

问题是您的用户类不是Avro类。

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

 类似资料:
  • 我现在一直在查看Spring Cloud模式注册表和汇合模式注册表。我可以看到一些区别,例如Spring Cloud模式注册表将模式保存在普通数据库中,默认情况下保存在h2中,而汇合模式注册表保存在kafka主题中。 spring云模式注册表的这种方法是否会对性能产生任何影响。据我所知,即使数据保留在主题上,以防汇合,查询它时仍然会有延迟。但会有重大影响吗? 我还可以看到,spring云模式注册表

  • 如何使用Spring Kafka通过合流模式注册表读取AVRO消息?有样品吗?我在官方参考文件中找不到它。

  • 我使用来自Confluent的Kafka Connect来使用Kafka流并以拼花格式写入HDFS。我正在1个节点中使用架构注册表服务,它运行良好。现在我想将模式注册表分发到集群模式以处理故障转移。关于如何实现这一点的任何链接或片段都将非常有用。

  • 有可能将融合模式注册与AWS MSK集成吗?如果你以前这样做过,你能提供一些你实现它的方法/博客吗?

  • 嘿,我想将ConFluent模式注册表与Avro Serializers一起使用:留档现在基本上是说:不要为多个不同的主题使用相同的模式 谁能解释一下原因吗?我重新搜索了源代码,它基本上将模式存储在Kafka主题中,如下所示(topicname,magicbytes,version- 因此,除了冗余之外,我看不到多次使用模式的问题?

  • 我们正在开发并尝试删除主题的模式,因为更改与旧模式不兼容。 我们删除了模式/主题,并尝试使用相同的主题名称创建新模式,成功创建了模式。 然而,当我们运行应用程序时,它仍然指向相同的模式ID。 旧模式ID(主题“topic1”):51 新架构ID(主题“topic1”):52 应用程序在反序列化消息时出错 <代码>root@bas:/#curl-khttps://schemaregistry:443