【问题标题】:Spring WebFlux using RSocket: Kotlin coroutines Flow vs Reactor Flux message formatSpring WebFlux 使用 RSocket:Kotlin 协程 Flow 与 Reactor Flux 消息格式
【发布时间】:2021-06-22 20:23:29
【问题描述】:

当我们使用 Spring WebFlux 的 RSocket(通过 WebSockets)支持使用 Kotlin Coroutines Flow 和 Reactor Flux 发出值时,IO 流量有什么不同吗?

@MessageMapping("stream")
suspend fun send(): kotlinx.coroutines.flow.Flow<SomeClass> = ...

VS

@MessageMapping("stream")
fun send(): reactor.core.publisher.Flux<SomeClass> = ...

另外,客户端代码(带有rsocket-websocket-client的JS)是否应该根据服务器使用Kotlin Coroutines Flow还是Reactor Flux而有所不同?

【问题讨论】:

    标签: spring-webflux kotlin-coroutines project-reactor rsocket


    【解决方案1】:

    不,它们应该是相同的。 Spring 应该处理它们之间的差异。也就是说,如果您发现任何错误,您应该提出它们。

    客户端代码应该不可能观察服务器是使用 Flux 还是 Flow 定义的。除此之外,希望客户端也不知道服务器的实现语言。

    我认为您的第一个示例也不需要暂停,因为 Flow 通常会很冷。 https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/

    Flow接口不携带信息是流是可以重复收集的冷流,每次收集时触发执行相同的代码,还是热流在同一运行中发出不同的值每个集合的来源。通常流代表冷流

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-07
      • 2019-07-31
      • 2015-03-28
      • 1970-01-01
      • 2018-09-09
      • 2021-11-23
      • 2020-09-12
      相关资源
      最近更新 更多