异步调用

基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小。

在 consumer.xml 中配置:

<dubbo:reference id="fooService" interface="com.alibaba.foo.FooService">
<dubbo:method name="findFoo" async="true" />
</dubbo:reference>
<dubbo:reference id="barService" interface="com.alibaba.bar.BarService">
<dubbo:method name="findBar" async="true" />
</dubbo:reference>

调用代码:

// 此调用会立即返回null
fooService.findFoo(fooId);
// 拿到调用的Future引用,当结果返回后,会被通知和设置到此Future
Future<Foo> fooFuture = RpcContext.getContext().getFuture(); // 此调用会立即返回null
barService.findBar(barId);
// 拿到调用的Future引用,当结果返回后,会被通知和设置到此Future
Future<Bar> barFuture = RpcContext.getContext().getFuture(); // 此时findFoo和findBar的请求同时在执行,客户端不需要启动多线程来支持并行,而是借助NIO的非阻塞完成 // 如果foo已返回,直接拿到返回值,否则线程wait住,等待foo返回后,线程会被notify唤醒
Foo foo = fooFuture.get();
// 同理等待bar返回
Bar bar = barFuture.get(); // 如果foo需要5秒返回,bar需要6秒返回,实际只需等6秒,即可获取到foo和bar,进行接下来的处理。

你也可以设置是否等待消息发出:

  • sent="true" 等待消息发出,消息发送失败将抛出异常。
  • sent="false" 不等待消息发出,将消息放入 IO 队列,即刻返回。
<dubbo:method name="findFoo" async="true" sent="true" />

如果你只是想异步,完全忽略返回值,可以配置 return="false",以减少 Future 对象的创建和管理成本:

<dubbo:method name="findFoo" async="true" return="false" />

最新文章

  1. PostgreSQL 9.3发布
  2. hdu4888 Redraw Beautiful Drawings 最大流+判环
  3. js渐隐渐入渐出效果 fadeOut fadeIn
  4. iOS: 使用CGContextRef,CGPath和UIBezierPath来绘画
  5. 数据库与SQL语言
  6. 关于myeclipse代码提示的一些问题
  7. 《RabbitMQ in action》
  8. poj 3267 The Cow Lexicon(dp)
  9. Java多线程初学者指南(5):join方法的使用
  10. href与src的区别
  11. 【转】如何开启notepad++函数列表功能
  12. 50行实现简易HTTP服务器
  13. hdu_1074_Doing Homework(状压DP)
  14. Laravel5.5 的 Homestead 开发环境部署
  15. 策略模式在ThreadpoolExecutor中的应用
  16. [js]面向对象2
  17. LeetCode121.买卖股票的最佳时机
  18. 浅尝辄止之MongoDB
  19. 用GDI+DrawImage画上去的图片会变大
  20. 005-SpringBoot2.x整合Security5(解决 There is no PasswordEncoder mapped for the id &quot;null&quot;)

热门文章

  1. 洛谷 2147 SDOI2008 Cave 洞穴勘测
  2. 【ACM】hdu_2004_成绩转换_201307261516
  3. [bzoj3339]Rmq Problem||[bzoj3585]mex_线段树
  4. Light oj 1138 - Trailing Zeroes (III) 【二分查找 &amp;amp;&amp;amp; N!中末尾连续0的个数】
  5. 我们的一个已投产项目的高可用数据库实战 - mongo 副本集的搭建具体过程
  6. 2本Hadoop技术内幕电子书百度网盘下载:深入理解MapReduce架构设计与实现原理、深入解析Hadoop Common和HDFS架构设计与实现原理
  7. yun install java
  8. ASP.NET通用权限系统快速开发框架
  9. bzoj 1093 [ ZJOI 2007 ] 最大半连通子图 —— 拓扑+DP
  10. JFreeChart之堆叠柱形图(StackedBar)