本文介紹了Mono鏈的Webflow超時的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在使用Spring Webflow,并嘗試理解Monos鏈的超時概念。
例如,有一系列Mono調用:
myService.firstOperation()
.then(myService.secondOperation())
...
.then(myService.nOperation())
.timeout(3000L)
如何應用超時:
1)一般操作(操作總時間)
2)用于ECH操作(每次操作不應超過超時)
3)僅用于最后一次操作(n操作)
?
我幾乎可以肯定,超時適用于最后一個發布者。如果是,如何將超時應用于操作總數?
推薦答案
超時運算符測量從訂閱時間到超時運算符觀察到的onNext/onComplete信號之間經過的時間。
考慮以下示例:
Mono.delay(Duration.ofMillis(1000))
.then(Mono.delay(Duration.ofMillis(1000)))
.then(Mono.delay(Duration.ofMillis(1000)))
.timeout(Duration.ofMillis(2500))
.block();
如果語句2(兩次操作之間測量的時間)或3(僅上次操作的持續時間計數)正確,則上面的代碼不會引發任何錯誤。
但是,超時操作測量的是上游所有操作的持續時間,因此語句1(測量的所有操作的總和)是正確的。
在本例中,所有操作的總和(1000+1000+1000=3000ms)大于配置的超時時間(2500ms),因此代碼會導致錯誤。
這篇關于Mono鏈的Webflow超時的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,