Spring Functions Catalog 5.0.0‐M1 可用

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

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

我们刚刚发布了5.0.0-M1https://repo.spring.io/milestone存储库中,您只需将此 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通道适配器提供自动配置。

以下是一些示例

  • sftpSupplier连接到 SFTP 服务器并从远程目录轮询文件,并将文件“提供”给您的应用程序
  • kafkaPublisherjava.util.function.Consumer实现)将记录生成到 Apache Kafka 主题中
  • aggregatorFunction根据某些关联键将多个输入分组到一个中

在自动配置到ApplicationContext后,这些函数可以注入到目标服务中,并与纯 Java API(参见Function.andThen(Function))组合。但是,更好的(并且对 Spring 应用程序更自然)方法是使用Spring Cloud Function项目的特性。例如,来自Spring Cloud Function 集成模块的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是来自FunctionCatalogRunnable,它是在application.yml中提到的上述组合。该应用程序每秒将经过一些转换后的当前时间输出到日志中。

试用 Spring Functions Catalog,欢迎任何反馈或贡献!

从这里,我们将在 3 月底发布RC1,并在 4 月发布GA

请参阅GitHub 存储库以获取 Spring Functions Catalog 的更多信息。

此致,+ Artem

获取 Spring 时事通讯

与 Spring 时事通讯保持联系

订阅

领先一步

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

了解更多

获取支持

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

了解更多

即将举行的活动

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

查看全部