Spring Cloud Stream Fishtown.RC1 /2.1.0.RC1 发布公告

工程 | Oleg Zhurakousky | 2018 年 10 月 30 日 | ...

我们很高兴地宣布 Spring Cloud Stream Fishtown 发布火车(release train)的第一个候选发布版本 - Fishtown.RC1/2.1.0.RC1。

Spring Cloud Stream Fishtown 2.1.0.RC1 现已可在 Spring Milestone 仓库中使用。

以下部分简要概述了此版本中包含的功能和改进。

主要依赖升级

  • Spring Boot 2.1.0.RC1
  • Reactor Californium.RELEASE
  • Spring Cloud Function 2.1.0.RC1

Spring Cloud Function 支持

此版本的主题是引入了一种新的编程模型,该模型使用 Spring Cloud Function 作为定义 流处理器 的替代方案,现在这些可以表示为类型为 java.util.function.[Supplier/Function/Consumer] 的 Bean。

要指定将哪个函数式 Bean 绑定到由绑定暴露的外部目标(destination),您必须提供 spring.cloud.stream.function.definition 属性。

以下是 Processor 应用将消息处理器暴露为 java.util.function.Function 的示例

@SpringBootApplication
@EnableBinding(Processor.class)
public class MyFunctionBootApp {

	public static void main(String[] args) {
		SpringApplication.run(MyFunctionBootApp.class, 
                  "--spring.cloud.stream.function.definition=toUpperCase");
	}

	@Bean
	public Function<String, String> toUpperCase() {
		return s -> s.toUpperCase();
	}
}

在上面,我们只是简单地定义了一个类型为 java.util.function.Function 名为 toUpperCase 的 Bean,并将其标识为用作消息处理器的 Bean,其 输入输出 将绑定到由 Processor 绑定暴露的外部目标。

函数组合

使用这种编程模型,您还可以从 函数组合 中获益,通过它您可以从一组简单的函数动态组合复杂的处理器。例如,将以下函数 Bean 添加到上面定义的应用程序中

@Bean
public Function<String, String> wrapInQuotes() {
	return s -> "\"" + s + "\"";
}

并修改 spring.cloud.stream.function.definition 属性,以反映您将 toUpperCasewrapInQuotes 组合成新函数的意图。为此,Spring Cloud Function 允许您使用 |(管道)符号。因此,完成我们的示例,我们的属性现在看起来像这样

--spring.cloud.stream.function.definition=toUpperCase|wrapInQuotes

其他重要特性、改进与增强

核心

  • 多 Binder 场景下的改进和增强
  • 默认配置属性与绑定特定配置属性处理方式的重大改进(涵盖核心、Rabbit 和 Kafka Binder)

除了 M1M2 中的变更和改进之外,以下是此 版本 的改进列表

Rabbit Binder

除了 M1M2 中的变更和改进之外,以下是此 版本 的改进列表

Kafka Binder

除了 M1M2 中的变更和改进之外,以下是此 版本 的改进列表

质量改进

作为持续改进代码质量和评估框架组件契约正确性的一部分,我们有一个新的验收测试项目,用于在 Cloud Foundry 和 Kubernetes 上引导 Spring Cloud Stream 应用程序。这些测试每天在全新环境(freshly repaved environment)中多次运行。我们希望这能为社区和客户在目标平台上构建更多自动化流水线提供基础。

Kinesis Binder

在此版本中,我们还想重点介绍最近发布的 Kinesis Binder

注意

如果应用程序是通过 Spring Initializr 创建的,它们需要在 Maven 依赖管理中将此 BOM 片段添加到 spring-cloud BOM 声明之前,否则您最终将使用最新的 snapshot 版本(这可能没问题,因为它会包含 M2 的所有工作)。

<dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-stream-dependencies</artifactId>
           <version>Fishtown.RC1</version>
           <type>pom</type>
           <scope>import</scope>
</dependency>

后续步骤

RC2 计划在几周内发布,之后是 Fishtown.RELEASE。

一如既往,我们欢迎反馈和贡献,请通过 StackoverflowGitHubGitter 联系我们。

获取 Spring 新闻通讯

订阅 Spring 新闻通讯,保持联系

订阅

抢先一步

VMware 提供培训和认证,助您加速前进。

了解更多

获取支持

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

了解更多

即将举行的活动

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

查看全部