Kotlin协程和Spring Framework 5反应类型

Kotlin协程允许通过返回Deferred值来执行非阻塞代码。 这对于在使用阻塞方法(例如从库)中生成非阻塞代码非常有用。

Spring 5允许在框架中使用MonoFlux 。 我所看到的最大兴趣是能够序列化这两种类型的实例,并在有人呼叫控制器端点时作为响应发回。

Spring 5的一个重要特点是对Kotlin(路由器,bean声明,…)有特定的支持,但是我找不到有关Kotlin协同程序和Spring 5反应类型之间可能的相互作用的信息。

有什么办法可以将这些功能的优点结合起来吗?

  • Deferred转换为Mono / Flux
  • 有一个Deferred作为响应类型的Spring控制器方法?

如果否,那么在这种情况下,如果我们有Spring 5反应类型,那么协程是否有意义呢?

从kotlinx.coroutines 0.19.1开始,协程为Spring Framework 5中使用的Reactor Core 3.1提供了支持。

Spring框架5协程支持目前正在进行中,作为spring-kotlin-coroutine社区项目的一个实验。 这样的支持还没有计划在本地进行Spring Framework 5的集成,但是可以使用SPR-15413并最终投票。 有关FluxMono如何适应Coroutines世界的问题,请参阅此评论 。

请记住,协程仍然是试验性的,在决定正式支持它们之前,应仔细评估正反两面。 另外Bridging Reactive和Coroutine也有一些限制,特别是在反压支持方面(Coroutines提前触发需求,只能执行request(1) )。

在JVM方面,看看Project Loom将如何发展以及Reactive和Coroutines生态系统如何利用它也可能是一个好主意。