Dubbo中CompletableFuture異步調用


使用Future實現異步調用,對於無需獲取返回值的操作來說不存在問題,但消費者若需要獲取到最終的異步執行結果,則會出現問題:消費者在使用Future的get()方法獲取返回值時被阻塞。為了解決這個問題,Dubbo又引入了CompletableFuture來實現對提供者的異步調用

一、創建提供者10-provider-async2

A、創建工程

直接復制10-provider-async工程,並命名為10-provider-async2

B、修改業務接口

需要異步調用執行的方法返回CompletableFuture<>

C、修改實現類

二、 創建消費者10-consumer-async2

A、創建工程

直接復制10-consumer-async工程,並命名為10-consumer-async2

B、修改業務接口

C、修改消費者類

直接刪除同步消費者類,修改異步消費者類

D、修改配置文件

三、總結

Future與CompletableFuture的對比

  • Future:Dubbo2.7.0版本之前消費者異步調用提供者的實現方式。源自於JDK5,對異步結果的獲取采用了阻塞與輪詢方式。
  • CompletableFuture:Dubbo2.7.0版本之后消費者異步調用提供者的實現方式。源自於JDK8,對異步結果的獲取采用了回調的方式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM