dubbo進階應用異步調用(可以實作類似循環屏障)
1,消費端配置好異步調用聲明
2,調用一個異步方法馬上getfuthure,此時wait,這個有傳回後再向下調用另一個異步方法,這樣即可都完成才結束大的任務
異步就是在于不等待請求發出就向下,直接用一個建立的future等,有傳回自動會寫到future,但是要自己拿,用future拿的時候沒拿到就會等了(可設定等待時間),這樣一來利用上了主線程執行任務的時間給子線程去傳回
// 如果foo需要5秒傳回,bar需要6秒傳回,實際隻需等6秒,即可擷取到foo和bar,進行接下來的處理。
異步調用
(+) (#)
基于NIO的非阻塞實作并行調用,用戶端不需要啟動多線程即可完成并行調用多個遠端服務,相對多線程開銷較小。 |
2.0.6及其以上版本支援 |
配置聲明:
consumer.xml
|
調用代碼:
|
你也可以設定是否等待消息發出:(異步總是不等待傳回)
- sent="true" 等待消息發出,消息發送失敗将抛出異常。
- sent="false" 不等待消息發出,将消息放入IO隊列,即刻傳回。
<
dubbo:method
name
=
"findFoo"
async
=
"true"
sent
=
"true"
/>
如果你隻是想異步,完全忽略傳回值,可以配置return="false",以減少Future對象的建立和管理成本:
|