领先一步
VMware 提供培训和认证,助您加速进步。
了解更多我代表 Spring Cloud Dataflow 团队,很高兴向大家介绍 Spring Functions Catalog。该项目的主要重点是提供一组独立的 Java 函数,这些函数可以直接在最终用户应用程序中使用。所有发布的工件本质上是针对某些特定的 Supplier、Function 或 Consumer 的自动配置。
我们刚刚在 https://repo.spring.io/milestone 仓库中发布了 5.0.0-M1,您只需要将此 BOM 添加到您的 Gradle(或 Maven)配置中
org.springframework.cloud.fn:spring-function-dependencies:5.0.0-M1
并为您的项目选择相应的功能作为依赖。
Spring Functions Catalog 是 Stream Applications 项目的 functions 子模块的品牌重塑(也是下一代)。这就是我们一开始就选择版本号为 5.0 的原因,因为本项目中的所有功能都与 Stream Applications 中的功能相同。因此,我们接下来的自然步骤是将 Stream Applications 迁移到使用这个新的 Spring Functions Catalog。
然而,Spring Functions Catalog 的目标不仅仅是为 Stream Applications 提供支持。因为它们都是用于具有特定任务的单个 Supplier、Function 或 Consumer 的自动配置的独立工件,所以这些功能可以直接添加到类路径中,并在目标项目中按原样使用,或者与其他任务组合使用。其中许多功能都为特定的 Spring Integration Channel Adapter 提供了自动配置。
以下仅举几例
sftpSupplier 连接到 SFTP 服务器,轮询远程目录中的文件,并将这些文件“提供”给您的应用程序kafkaPublisher(java.util.function.Consumer 实现)将记录发布到 Apache Kafka 主题aggregatorFunction 根据某个相关键将多个输入分组为一个在自动配置到 ApplicationContext 后,这些功能可以被注入到目标服务中,并使用纯 Java API 进行组合(参见 Function.andThen(Function))。然而,更佳(也更适合 Spring 应用程序)的方式是利用 Spring Cloud Function 项目的功能。例如,可以使用 Spring Cloud Function Integration 模块中的 FunctionFlowBuilder 来为任何复杂的解决方案组合 IntegrationFlow。另一种方法是通过 spring.cloud.function.definition 配置属性按名称组合它们。
作为概念验证,项目仓库中的 time-spel-log 示例具有这些依赖项
implementation 'org.springframework.cloud.fn:spring-time-supplier'
implementation 'org.springframework.cloud.fn:spring-spel-function'
implementation 'org.springframework.cloud.fn:spring-log-consumer'
application.yml 具有此属性
spring:
cloud:
function:
definition: timeSupplier|spelFunction|logConsumer
应用程序逻辑如下所示
@Scheduled(fixedDelay = 1000)
void scheduleFunctionCall() {
this.composedFunction.run();
}
其中 composedFunction 是来自 FunctionCatalog 的一个 Runnable,并且是在 application.yml 中提到的组合。该应用程序每秒将当前时间经过一些转换后输出到日志中。
试试 Spring Functions Catalog,任何反馈或贡献都欢迎!
从这里,我们将在三月底迈向 RC1,并在四月发布 GA。
有关 Spring Functions Catalog 的更多信息,请参阅 GitHub 仓库。
祝好, + Artem