Spring Cloud Stream 4.0.0 模式注册表支持更新

工程 | Soby Chacko | 2022 年 11 月 10 日 | ...

这篇博文更新了 Spring Cloud Stream 4.0.x 版本中包含的模式注册表支持。

许多企业使用模式注册表来处理模式演变用例,例如 Confluent 模式注册表。从 Spring Cloud Stream 的 1.1.x 版本到 3.0.0 版本,我们提供了模式注册表服务器和基于 AVRO 的模式注册表客户端转换器,可以协调模式注册表服务器中的模式。Spring Cloud Stream 3.0.0 版本将模式注册表组件移动到顶级 spring-cloud 项目,并且 Spring Cloud Stream 将这些组件包含在其 BOM 中,以便最终用户应用程序使用它们。但是,这种方式扩展性不佳,在 3.2 版本中,我们决定停止将它们作为 Spring Cloud Stream BOM 的一部分。

模式注册表用例在流应用程序中非常重要,社区一直渴望从核心 Spring Cloud Stream 获得解决方案。我们很高兴地通知您,模式注册表组件已返回到 Spring Cloud Stream 的 4.0.0 版本。这条路径是这些模式注册表组件的完整循环之旅。在下面,我们将重新介绍这些组件并简要概述其功能。

Spring Cloud Stream 模式注册表服务器

Spring Cloud Stream 4.0.x 版本提供了一个独立的模式注册表服务器,专门用于 Spring Cloud Stream 解决的用例。这些用例涵盖了跨多个模式版本的模式演变。这些用例的主要要点是,生产者应用程序使用先前的模式版本发布。但是,消费者以向后兼容的方式处理所有模式版本。这些工作流包括模式验证,以及使用已验证的模式作为契约和消息转换器数据序列化的基础。我们不建议在 Spring Cloud Stream 之外使用此模式注册表服务器。默认情况下,此模式注册表服务器使用内存中的 H2 数据库作为后端存储。但是,您可以使用 Postgres 或 MySQL 作为后端数据库。Spring Cloud Stream 将此模式注册表服务器作为完整的 Spring Boot 应用程序提供。因此,您可以直接从 Maven 中央下载它(当 Spring Cloud Stream 4.0.0 普遍可用时)。如果您想在快照或里程碑版本上尝试此功能,您可以从相关的 Artifactory 存储库下载它。以下是 4.0.0-SNAPSHOT 版本的 Maven 坐标。如果您不想使用快照进行测试,也可以使用 4.0.0-M54.0.0-RC1

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-stream-schema-registry-server</artifactId>
	<version>4.0.0-SNAPSHOT</version>
</dependency>

假设您想使用独立模式注册表服务器以外的其他服务器(自定义服务器)。在这种情况下,您可以在应用程序中包含服务器模块作为依赖项,并通过启用 @EnableSchemaRegistryServer 创建自定义 Spring Boot 应用程序。如果您有不受支持的后端存储,则应使用此策略。

Spring Cloud Stream 模式注册表客户端

Spring Cloud Stream 4.0.0 还提供了一个模式注册表客户端模块,该模块提供基于 AVRO 的消息转换器。这些转换器是模式注册表感知的,并与模式注册表服务器通信以协调模式,同时转换有效负载以进行序列化。应用程序需要使用注释 @EnableSchemaRegistryClient 来使它们通过 SchemaRegistryClient bean 了解模式注册表服务器。Spring Boot 自动配置基于 AVRO 的模式注册表感知消息转换器。

以下是 4.0.0-SNAPSHOT 版本的模式注册表客户端模块的 Maven 坐标。您也可以使用 4.0.0-M54.0.0-RC1

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-stream-schema-registry-client</artifactId>
	<version>4.0.0-SNAPSHOT</version>
</dependency>

将 Confluent 模式注册表服务器与 Spring Cloud Stream 模式注册表客户端一起使用

Confluent 模式注册表是针对基于 Kafka 的应用程序的模式演变的流行商业解决方案。上面提到的 Spring Cloud Stream AVRO 消息转换器可以与 Confluent 模式注册表一起使用。要使其工作,应用程序需要覆盖 SchemaRegistryClient bean 并为 ConfluentSchemaRegistryClient 提供实现。

资源

我们提供了一组示例应用程序,演示了本博文中描述的所有概念 此处。请参阅 自述文件 以获取更多详细信息。

此处 是模式注册表参考文档。

结论

Spring Cloud Stream 4.0.0 从 Spring Cloud Stream 的先前版本中重新引入了模式注册表组件。这篇博文检查了重新引入支持的动机和概述。Spring Cloud Stream 中提供的支持可能仅涵盖某些模式演变用例。但是,提供的模式注册表组件可以支持许多属于 Spring Cloud Stream 应用程序范围内的模式演变用例,并具有传输中立的增值。

获取 Spring 新闻通讯

与 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获取支持

Tanzu Spring 在一个简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部