领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多我很高兴代表 Spring Cloud Dataflow 团队向您介绍 Spring Functions Catalog。该项目的主要重点是提供一组独立的 Java 函数,这些函数可以直接在最终用户应用程序中使用。所有发布的工件本质上都是针对某些特定 Supplier
、Function
或 Consumer
的自动配置。
我们刚刚将 5.0.0-M1
发布到 https://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 提供服务。因为所有这些都是独立的工件,用于对具有特定作业的单个 Supplier
、Function
或 Consumer
进行自动配置,所以这些函数可以简单地添加到类路径中,并在目标项目中按原样使用,或者与其他任务组合使用。这些函数中的大多数都为特定的 Spring Integration 通道适配器 提供自动配置。
以下是一些示例
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,欢迎任何反馈或贡献!
从这里开始,我们将在 3 月底推出 RC1
,并在 4 月推出 GA
。
有关 Spring Functions Catalog 的更多信息,请参见 GitHub 存储库。
干杯,+ Artem