Spring Functions Catalog 5.0.0-M1 已发布

发布 | Artem Bilan | 2024 年 3 月 1 日 | ...

我代表 Spring Cloud Dataflow 团队,很高兴向大家介绍 Spring Functions Catalog。该项目的主要重点是提供一组独立的 Java 函数,这些函数可以直接在最终用户应用程序中使用。所有发布的工件本质上是针对某些特定的 SupplierFunctionConsumer 的自动配置。

我们刚刚在 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 提供支持。因为它们都是用于具有特定任务的单个 SupplierFunctionConsumer 的自动配置的独立工件,所以这些功能可以直接添加到类路径中,并在目标项目中按原样使用,或者与其他任务组合使用。其中许多功能都为特定的 Spring Integration Channel Adapter 提供了自动配置。

以下仅举几例

  • sftpSupplier 连接到 SFTP 服务器,轮询远程目录中的文件,并将这些文件“提供”给您的应用程序
  • kafkaPublisherjava.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

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

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

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

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

查看所有