本文介紹了Mono鏈的Webflow超時(shí)的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問題描述
我正在使用Spring Webflow,并嘗試?yán)斫釳onos鏈的超時(shí)概念。
例如,有一系列Mono調(diào)用:
myService.firstOperation()
.then(myService.secondOperation())
...
.then(myService.nOperation())
.timeout(3000L)
如何應(yīng)用超時(shí):
1)一般操作(操作總時(shí)間)
2)用于ECH操作(每次操作不應(yīng)超過超時(shí))
3)僅用于最后一次操作(n操作)
?
我?guī)缀蹩梢钥隙ǎ瑫r(shí)適用于最后一個(gè)發(fā)布者。如果是,如何將超時(shí)應(yīng)用于操作總數(shù)?
推薦答案
超時(shí)運(yùn)算符測(cè)量從訂閱時(shí)間到超時(shí)運(yùn)算符觀察到的onNext/onComplete信號(hào)之間經(jīng)過的時(shí)間。
考慮以下示例:
Mono.delay(Duration.ofMillis(1000))
.then(Mono.delay(Duration.ofMillis(1000)))
.then(Mono.delay(Duration.ofMillis(1000)))
.timeout(Duration.ofMillis(2500))
.block();
如果語(yǔ)句2(兩次操作之間測(cè)量的時(shí)間)或3(僅上次操作的持續(xù)時(shí)間計(jì)數(shù))正確,則上面的代碼不會(huì)引發(fā)任何錯(cuò)誤。
但是,超時(shí)操作測(cè)量的是上游所有操作的持續(xù)時(shí)間,因此語(yǔ)句1(測(cè)量的所有操作的總和)是正確的。
在本例中,所有操作的總和(1000+1000+1000=3000ms)大于配置的超時(shí)時(shí)間(2500ms),因此代碼會(huì)導(dǎo)致錯(cuò)誤。
這篇關(guān)于Mono鏈的Webflow超時(shí)的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,