此文档已经不再维护。您当前查看的是快照版本。如果想要查看最新版本的文档,请参阅最新版本。
Provider端异步执行将阻塞的业务从Dubbo内部线程池切换到业务自定义线程,避免Dubbo线程池的过度占用,有助于避免不同服务间的互相影响。异步执行无异于节省资源或提升RPC响应性能,因为如果业务执行需要阻塞,则始终还是要有线程来负责执行。
Provider 端异步执行和 Consumer 端异步调用是相互独立的,你可以任意正交组合两端配置
服务接口定义:
服务实现:
通过 return CompletableFuture.supplyAsync()
,业务执行已从 Dubbo 线程切换到业务线程,避免了对 Dubbo 线程池的阻塞。
Dubbo 提供了一个类似 Servlet 3.0 的异步接口AsyncContext
,在没有 CompletableFuture 签名接口的情况下,也可以实现 Provider 端的异步执行。
服务接口定义:
服务暴露,和普通服务完全一致:
服务实现: