Spring Webflux与Reactor中的ReplaySubject(RxJava)等效吗?
我需要一个可观察的热门频道,该频道可以有N个订阅者,并将以前发布的元素(如ReplaySubject)保存在rxJava中。 感谢您的评论,即时通讯使用Spring webflux。
我在Reactor中找不到类似ReplaySubject的东西。
如果没有ReplaySubject的实现,那我该怎么实现呢?,我有一些代码:
class ReplayFlux<T> {
private val elements: List<T> = emptyList()
private val currentSubscriptions: List<FluxSink<T>> = emptyList()
fun publish(element: T){
elements.plus(element)
currentSubscriptions.forEach {
it.next(element)
}
}
fun subscribe(): Flux<T>{
return Flux.create {fluxSink ->
currentSubscriptions.plus(fluxSink)
elements.forEach {element ->
fluxSink.next(element)
}
}
}
fun finish(){ currentSubscriptions.forEach { it.complete() } }
}
很明显,这不是线程安全的,有人可以提供更好的展示机会。如果您认为这不太坏,那么在这种情况下应该使用什么线程安全的数据结构?