1 回答

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