Kotlin协程和Spring Framework 5反应型

Bas*_*en7 6 spring coroutine kotlin spring-webflux kotlinx.coroutines

Kotlin协程允许通过返回Deferred值来执行非阻塞代码.这对于在使用阻塞方法(例如来自库)时制作非阻塞代码非常有用.

Spring 5允许使用MonoFlux进入框架.我看到的最大兴趣是能够序列化这两种类型的实例,并在有人调用控制器端点时将其作为响应发送回来.

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

有没有办法结合这些功能的优势?

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

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

Séb*_*uze 15

Coroutines支持在Spring Framework 5中使用的Reactor Core 3.1,从kotlinx.coroutines 0.19.1开始.

Spring Framework 5 Coroutines支持目前正在进行中,作为spring-kotlin-coroutine社区项目的一项实验.目前尚未计划在Spring Framework 5中集成这种支持,但有SPR-15413可以关注并最终投票支持.有关如何Mono以及如何Flux适应Coroutines世界的问题,请参阅此评论.

请记住,Coroutines仍然是实验性的,在决定是否正式支持它们之前,应该仔细评估优缺点.此外,Bridging Reactive和Coroutines也有一些限制,特别是在背压支持方面(Coroutines早期触发需求并且只能执行Deferred).

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