领先一步
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。
要指定要绑定到 bindings 公开的外部目标(destination)的函数 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();
}
}
在上面的示例中,我们简单地定义了一个名为toUpperCase的java.util.function.Function类型的 bean,并将其标识为用作消息处理程序的 bean,其input和output将绑定到 Processor binding 公开的外部目标。
使用这种编程模型,您还可以受益于函数组合,您可以从一组简单的函数动态地组合复杂的处理程序。例如,将以下函数 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 项目,用于在 Cloud Foundry 和 Kubernetes 上引导 Spring Cloud Stream 应用程序。这些测试每天在新重置的环境中运行多次。我们希望这能为社区和客户在目标平台上构建更多自动化流水线提供基础。
在此版本中,我们还想重点介绍最近发布的 Kinesis Binder。
各种其他增强和错误修复:Core Rabbit Binder Kafka Binder
注意
如果应用程序是从 Spring Initializr 创建的,则需要在声明 spring-cloud BOM 之前,在 maven 依赖管理中添加此 BOM 片段,否则您将得到最新的快照(这可能是可以的,因为它将包含 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 计划于九月底发布,主要包含新的绑定功能以及更多围绕支持 Spring Cloud Function 作为编程模型的功能和改进。
一如既往,我们欢迎反馈和贡献,因此请通过 Stackoverflow 或 GitHub 或 Gitter 与我们联系。