【问题标题】:Other places to store Apache Avro schemas than the classpath存储 Apache Avro 模式的其他位置,而不是类路径
【发布时间】:2020-02-20 19:22:23
【问题描述】:

也许有人已经问过这个问题,但经过一些搜索我仍然没有找到答案。

我有多个 Spring Boot 应用程序,它们应该通过事件流和 REST 调用相互通信。为了强制 DTO 的一致性,我想使用 Apache Avro 生成 Java 类,但我不知道在哪里存储 Avro 模式。

假设 App1 应该调用 App2,因此 App2 会生成 DTO 模式,App1 将使用这些模式来使用其数据。我在哪里可以存储 App1 的模式,以便 App2 可以使用它们生成所需的 Java 类。

同样,App1 在 Redis 上发布消息,其他读取这些消息的应用程序需要使用 Avro 模式反序列化为 Java 对象,如果我可以将这些模式集中在某个地方,那将非常有用。

我使用 Maven 和 Avro maven 插件。

非常感谢您的帮助。

【问题讨论】:

    标签: serialization deserialization avro avro-tools


    【解决方案1】:

    您可以创建一个 APP_commons 服务来满足 avro 模式,该模式将包含生成每个 APP 需要的值/数据的相应方法。

    APP_commons 可以作为依赖添加到 APP1 和 APP2 的 pom 中。

    希望这会有所帮助!您也可以使用 feign 客户端。

    【讨论】:

    • 感谢您的回答,但为什么不在 APP_commons jar 中添加所有 DTO?我想避免做一个普通的罐子
    • 你可以这样做。在这种情况下,您将需要使用 Feign 客户端在两个微服务之间进行调用。
    【解决方案2】:

    我找到了这个 Spring Cloud 项目的解决方案https://github.com/spring-cloud/spring-cloud-schema-registry 它提供了我所需要的一切。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-24
      • 2017-02-28
      • 2017-05-08
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-14
      相关资源
      最近更新 更多