2017-09-04 66 views
0

我有(界)流量的流量,我想轉換成流量龍,其中長是內流量的大小:如何自動訂閱內部Flux/Mono?

Flux.just(Flux.just(1, 2, 3), Flux.just(1, 2) ) 
     .map(Flux::count) 
     .log() 
     .subscribe(); 

執行日誌如下:

onSubscribe([Synchronous Fuseable] FluxArray.ArraySubscription) 
request(unbounded) 
onNext({ "operator" : "Count" }) 
onNext({ "operator" : "Count" }) 
onComplete() 

Flux :: count返回一個單音,不是一個長。是否有任何操作員在訂閱主通量時自動解開這個內部單聲道?

回答

1

flatMap()是有你:

變換通過此Flux發射的元件異步成Publisher s,則這些弄平內出版商成單個Flux通過融合,這讓他們交織。

https://projectreactor.io/docs/core/snapshot/api/reactor/core/publisher/Flux.html#flatMap

+0

感謝您的回答!我試圖解決的問題實際上稍有不同:如果內部單聲道不直接在父通量中,應該使用什麼操作符:'Flux >>'到'Flux >'在這種情況下我們仍然可以使用flatmap嗎? –

+1

嗯。不,我認爲這一個不會工作。這就是'Tuple'的集合嵌套價值,我不知道有什麼需要處理它的部分。 –

+1

終於找到了一個解決方案,而無需訂閱內部通量/單聲道。在groupBy之後,我鏈接下面的運算符,並在計算組元素之後創建元組:tuples.of(group.key(),count).flatMap(group-> group.count() ));' –