Dubbo¶
收藏¶
Dubbo 如何将 Netty 的异步请求转为同步方法调用¶
-
每次请求生成唯一的
requestId
,此时是调用线程; -
调用线程生成
CompletableFuture
,向 Netty 的 Channel 写数据前,将CompletableFuture
保存到FUTURES
(这是一个 map)中,key 为requestId
,同时将requestId
写入请求中。然后从CompletableFuture
同步获取结果; -
Netty 收到写请求后,解析到
requestId
,从FUTURES
获取到CompletableFuture
,然后调用完成方法; -
此时调用线程就可以从
CompletableFuture
中获取结果,完成同步调用过程;