reactor3 flux 的使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了reactor3 flux 的使用相关的知识,希望对你有一定的参考价值。
参考技术A reactor 本质上是观察者模式的使用添加数据
消费数据 subscribe方法
数据中间处理环节 do 系列接口
buffer 的使用
flatmap, map 的区别
先看下图
返回的不一样
flatMap必须返回的是个publisher 而map 返回的是一个对象 这个对象既可以是item 也可以是封装为Flux ,Mono
Spring WebFlux 使用 RSocket:Kotlin 协程 Flow 与 Reactor Flux 消息格式
【中文标题】Spring WebFlux 使用 RSocket:Kotlin 协程 Flow 与 Reactor Flux 消息格式【英文标题】:Spring WebFlux using RSocket: Kotlin coroutines Flow vs Reactor Flux message format 【发布时间】: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而有所不同?
【问题讨论】:
【参考方案1】:不,它们应该是相同的。 Spring 应该处理它们之间的差异。也就是说,如果您发现任何错误,您应该提出它们。
客户端代码应该不可能观察服务器是使用 Flux 还是 Flow 定义的。除此之外,希望客户端也不知道服务器的实现语言。
我认为您的第一个示例也不需要暂停,因为 Flow 通常会很冷。 https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/
Flow接口不携带信息是流是可以重复收集的冷流,每次收集时触发执行相同的代码,还是热流在同一运行中发出不同的值每个集合的来源。通常流代表冷流
【讨论】:
以上是关于reactor3 flux 的使用的主要内容,如果未能解决你的问题,请参考以下文章
(12)Reactor 3 自定义数据流——响应式Spring的道法术器
(15)Reactor 3 Operators——响应式Spring的道法术器
附2:Reactor 3 之选择合适的操作符——响应式Spring的道法术器