与Spring Webflux的Reactor中的ReplaySubject(RxJava)等效?

时间:2019-01-07 22:02:39

标签: spring-boot kotlin rx-java reactor-netty

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() } }
}

很明显,这不是线程安全的,有人可以提供更好的展示机会。如果您认为这不太坏,那么在这种情况下应该使用什么线程安全的数据结构?

0 个答案:

没有答案