1 回答

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
這里有一些事情在起作用。
請(qǐng)注意
.merge
運(yùn)算符的以下建議...
請(qǐng)注意,合并是為使用異步源或有限源而定制的。當(dāng)處理尚未在專用計(jì)劃程序上發(fā)布的無(wú)限源時(shí),您必須將該源隔離在其自己的計(jì)劃程序中,否則合并會(huì)嘗試在訂閱另一個(gè)源之前將其排出。
您的出站助焊劑使用 ,但這只影響在運(yùn)算符之后鏈接的運(yùn)算符。即,它不會(huì)影響之前的任何內(nèi)容。具體來(lái)說(shuō),它不會(huì)影響 lambda 中的代碼傳遞到執(zhí)行的線程。如果您在每個(gè)出站通量之前添加,您可以看到這一點(diǎn)。
.publishOn
.publishOn
.publishOn
Flux.create
.log()
.publishOn
您的 lambda 已傳遞給調(diào)用阻塞方法 ()。
Flux.create
queue.take
由于您在線程中調(diào)用合并的 Flux,因此您的 lambda 將傳遞給線程中的執(zhí)行,并阻止它。subscribe(...)
main
Flux.create
main
最簡(jiǎn)單的解決方法是使用而不是使 lambda 中的代碼傳遞到不同的線程(不是 )上運(yùn)行。這將防止線程阻塞,并允許來(lái)自兩個(gè)出站流的合并輸出交錯(cuò)。.subscribeOn
.publishOn
Flux.create
main
main
添加回答
舉報(bào)