宣布发布 Spring Cloud Function 3.0.0.RELEASE

工程 | Oleg Zhurakousky | 2019 年 11 月 25 日 | ...

我们很高兴宣布发布 Spring Cloud Function 3.0.0.RELEASE,它是 Spring Cloud Hoxton.RELEASE(即将发布)的一部分,并基于 Spring Boot 2.2.x 构建。

Spring Cloud Function 3.0.0.RELEASE 模块可在 Maven Central 仓库中使用。

快速亮点

透明类型转换

此版本引入了重构的 FunctionCatalog 实现,它除了提供 函数组合、响应式和非响应式函数支持 等功能外,还通过 Spring Messaging 提供的 MessageConverters 引入了 透明类型转换 功能。

这意味着您可以在函数签名中使用领域特定类型,并依靠 MessageConverters 来完成转换。

@Bean
public Function<Foo, Bar> funcFooToBar() {
    return value -> . . .;
}

此外,这些转换器在组合函数时也用于类型转换。考虑以下函数

@Bean
public Function<Flux<Baz>, Flux<Xyz>> funcBazToXyz() {
    return value -> . . .;
}

组合方式为 spring.cloud.function.definition=funcFooToBar|funcBazToXyz。考虑到上述两个函数在 funcFooToBar 的输出类型与 funcBazToXyz 的输入类型之间存在不匹配,MessageConverters 将自动介入进行类型转换。另请注意 FunctionCatalog 的另一项特性,它允许您组合响应式和非响应式函数。Spring Cloud Function 提供了几个开箱即用的 MessageConverters,它们应该可以满足大多数情况(例如 json 到 POJO 再到 json),但您也可以通过简单地声明一个类型为 MessageConverter 的 bean 来注册自己的转换器。

函数路由

Spring Cloud Function 的路由功能允许您调用一个特殊的函数,该函数充当路由器,将请求路由到您实际希望调用的函数。此功能在某些 FAAS 环境中非常有用,在这些环境中,维护多个函数的配置可能很麻烦,或者无法暴露多个函数。

您可以在用户指南的这一节中找到有关此功能的更多详细信息。

函数元数(多输入/输出)

有时需要对数据流进行分类和组织。例如,考虑一个经典的大数据用例,处理包含“订单”和“发票”等非结构化数据,并且您希望将它们分别存储到不同的数据存储中。这时就需要用到函数元数(具有多个输入和输出的函数)的支持。关于此功能的另一篇文章可在此处查看:此处,此类函数的示例可在这些测试用例之一中找到。

更多信息请参阅用户指南的这一节

函数组合与适配;

虽然函数组合对于 Spring Cloud Function 来说不是新功能,但在此版本中得到了改进。

作为一个额外的好处,您可以组合不同编程风格(例如,响应式和命令式)的函数,您可以将 SupplierFunction 组合,将 SupplierConsumer 组合,将 FunctionConsumer 组合等等——我们将进行适配。您可以组合生产者函数的输出与消费者函数的输入不匹配的函数——我们将进行转换。未来将有另一篇关于此主题的博客,我们也在完善文档。

Kotlin Lambda 支持

虽然自 v2.x 以来就已存在对 Kotlin lambda 的支持,但在此版本中有一些额外的增强功能。您可以在用户指南的这一节中了解更多信息。

下一步

一如既往,我们欢迎反馈和贡献,请通过 StackoverflowGitHub 与我们联系。

订阅 Spring 电子报

通过 Spring 电子报保持联系

订阅

抢先一步

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

了解更多

获取支持

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

了解更多

近期活动

查看 Spring 社区的所有近期活动。

查看全部