先行一步
VMware 提供培训和认证,助力您的进步。
了解更多我们很高兴地宣布 Spring Cloud Stream Fishtown 发布列车的第二个里程碑版本 - Fishtown.M2/2.1.0.M2。
Spring Cloud Stream Fishtown 2.1.0.M2 已在 Spring Milestone 仓库中可用。该版本的发布说明包含了与 Spring Boot、Spring Cloud、Spring AMQP 和 Spring for Apache Kafka 的版本兼容性相关信息。
以下部分简要概述了此版本包含的特性和改进。
此版本的主要亮点是引入了一种新的编程模型,该模型使用 Spring Cloud Function 作为定义 stream handlers 和 sources 的替代方案,它们现在可以表示为类型为 java.util.function.[Supplier/Function/Consumer]
的 bean
要指定将哪个函数式 bean 绑定到绑定暴露的外部目标,必须提供 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
的 bean,命名为 toUpperCase,并将其标识为用作消息处理器的 bean,其 input 和 output 将绑定到 Processor 绑定暴露的外部目标。
使用这种编程模型,您还可以受益于 函数组合,您可以从一组简单函数动态组合复杂的处理器。例如,将以下函数 bean 添加到上面定义的应用程序中
@Bean
public Function<String, String> wrapInQuotes() {
return s -> "\"" + s + "\"";
}
并修改 spring.cloud.stream.function.definition
属性,以反映您打算从 toUpperCase 和 wrapInQuotes 组合一个新的函数。为此,Spring Cloud Function 允许您使用 |
(管道) 符号。因此,为完成我们的示例,我们的属性现在看起来像这样
--spring.cloud.stream.function.definition=toUpperCase|wrapInQuotes
作为持续改进代码质量并评估框架组件合同正确性的努力的一部分,我们有一个新的 验收测试项目 (Acceptance Test project),用于在 Cloud Foundry 和 Kubernetes 上引导 Spring Cloud Stream 应用程序。这些测试每天在全新环境上运行多次。我们希望这能为社区和客户在目标平台上构建更多自动化流水线提供基础。
在此版本中,我们还想重点介绍最近发布的 Kinesis 绑定器
其他各种增强和错误修复:核心 Rabbit 绑定器 Kafka 绑定器
注意
如果应用程序是从 Spring Initializr 创建的,它们需要在 maven 依赖管理中,在 spring-cloud BOM 声明之前添加此 BOM 片段,否则您将使用最新的 snapshot 版本(这可能没问题,因为它会包含 M2 中的所有工作)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-dependencies</artifactId>
<version>Fishtown.M2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
M3 版本计划在 9 月底发布,主要将包含新的绑定特性以及更多支持 Spring Cloud Function 作为编程模型的特性和改进。
一如既往,我们欢迎反馈和贡献,请通过 Stackoverflow、GitHub 或 Gitter 联系我们。