1 回答

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
Mono
那么 a和 a有什么區(qū)別呢Flux
?
不同之處在于 aFlux
是 a List<Mono>
(為簡(jiǎn)單起見)。什么是Mono
?它是 T 類型的東西。那么這對(duì)你來說意味著什么。
好吧,如果你獲取 aList<T>
你可以把它放在 a 中Mono<List<T>
,或者你可以把它放在 a 中Flux<T>
。
如果您使用Flux#fromIterable
列表中的每個(gè)項(xiàng)目放置此列表,那么列表中的每個(gè)項(xiàng)目都會(huì)變成一個(gè)Mono
,并且Flux
會(huì)在可用時(shí)發(fā)出該項(xiàng)目。
因?yàn)槟阌幸粋€(gè)返回整個(gè)列表的阻塞調(diào)用,List<T>
如果你把它放在 a 中,Mono
訂閱者將在一個(gè)大的發(fā)射中獲得整個(gè)列表。如果它是一個(gè)非常大的列表,它可能會(huì)給 帶來壓力,subscriber
因?yàn)榘l(fā)布者可能會(huì)在一大塊中發(fā)布一個(gè)巨大的列表,比如 1 000 000 個(gè)項(xiàng)目。
如果將大清單放入Flux
罐頭subscriber
限制中,并要求服務(wù)以更受控制的方式發(fā)出物品,例如分 10 批次,每批 100,000 件物品。
所以我個(gè)人建議將列表放在Flux
.
但是這些都不會(huì)顯著提高您的應(yīng)用程序的性能。subscribers
它更多的是調(diào)用可以獲得的功能。
為防止您的應(yīng)用程序出現(xiàn)嚴(yán)重減速,重要的是您的阻塞調(diào)用是使用其自己的線程進(jìn)行的。Schedulers.elastic()
這可以通過使用為長(zhǎng)期任務(wù)生成新線程來實(shí)現(xiàn)。然后在默認(rèn) 60 秒后終止該線程。
添加回答
舉報(bào)