Kotlin协程允许通过返回 Deferred
值来执行非阻塞代码 . 这对于在使用阻塞方法(例如来自库)时制作非阻塞代码非常有用 .
Spring 5允许在框架中使用 Mono
和 Flux
. 我看到的最大兴趣是能够序列化这两种类型的实例,并在有人调用控制器 endpoints 时将其作为响应发送回来 .
Spring 5的一个重点是对Kotlin(路由器,bean声明......)有一个特定的支持,但是我找不到关于Kotlin协同程序和Spring 5反应类型之间可能的相互作用的信息 .
有没有办法结合这些功能的优势?
-
将
Deferred
转换为Mono
/Flux
? -
具有
Deferred
作为Spring控制器方法的响应类型?
如果不是,在哪种情况下,如果我们有Spring 5反应类型,协程是否有意义?
1 回答
Coroutines为Spring Framework 5中使用的Reactor Core 3.1提供支持,自kotlinx.coroutines 0.19.1起 .
Spring Framework 5 Coroutines支持目前正在进行中,作为spring-kotlin-coroutine社区项目中的一项实验 . 目前还没有计划在Spring Framework 5中集成这种支持,但是你可以关注并最终投票支持.1507248_ . 有关
Flux
和Mono
如何适合Coroutines世界的问题,请参阅this comment .请记住,Coroutines仍然是实验性的,在决定是否正式支持它们之前,应该仔细评估优缺点 . 此外,桥接Reactive and Coroutines也有一些限制,特别是在背压支持方面(Coroutines早期触发需求并且只能执行
request(1)
) .在JVM方面,了解Project Loom将如何演变以及Reactive和Coroutines生态系统如何利用它也可能是一个好主意 .