1、参考
异步调用:http://dubbo.apache.org/en-us/docs/user/demos/async-call.html
2、异步调用
2.1、Dubbo2.0.6+的异步调用
这里说的异步调用应该是非阻塞的NIO调用,一个线程可同时并发调用多个远程服务,每个服务的调用都是非阻塞的,线程立即返回。
上图中主要关注一下userThread的行为,用户发出调用后,IOThread会在上下文中设置Future。用户从RpcContext中取得Future,然后wait这个Future其它的事情都由IOThread完成。
总之,用户发出调用后会立刻返回,而不是调用在服务端执行完代码、返回结果后返回。用户返回后可以去做点其它事情,比如调用另外一个服务,然后回头等待前一个调用完成。从上图可以看出,异步调用完全是Consumer端的行为。
配置:
<dubbo:reference id="fooService" interface="com.alibaba.foo.FooService">
<dubbo:method name="findFoo" async="true" />
</dubbo:referen