领先一步
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 集成模块的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
。
请参阅GitHub 存储库以获取 Spring Functions Catalog 的更多信息。
此致,+ Artem