使用Flux而不是for循环,有什么好处?

我试图让我的脑袋围绕反应式编程,所以我想问问在这里使用Flux是否有任何好处:

override fun notifyObserversOnMessage(message: Message) { Flux.fromStream(observers.stream()) .map { observer -> Mono.just(observer.reactOnMessage(message)) } .subscribe() } 

代替:

 override fun notifyObserversOnMessage(message: Message) { for (observer in observers) { observer.reactOnMessage(message) } } 

这是否取决于每个观察员正在做的工作,如果这是IO还是不?

这取决于。

如果按顺序处理observers是合理的,那么在这里使用Flux是没有好处的

 override fun notifyObserversOnMessage(message: Message) { observers.forEach { observer -> observer.reactOnMessage(message) } } 

或干脆

 override fun notifyObserversOnMessage(message: Message) { observers.forEach { it.reactOnMessage(message) } } 

很好。

为了天真的平行性,

 override fun notifyObserversOnMessage(message: Message) { observers.parallelStream().forEach { it.reactOnMessage(message) } } 

可以使用,但在这一点上,更有可能你会有额外的需求,如工作者池或超时。 在这种情况下,反应堆的表现力是有用的。