dubbo 同步调用

来源:互联网 发布:域名后缀biz什么意思 编辑:程序博客网 时间:2024/06/09 18:47

个人笔记。


测试用例基于dubbo协议。同步调用。

具体调用过程通过debug可以看到。

最终是通过NettyChannel发送请求,具体调用org.jboss.netty.channel.Channel.write(Object)方法。


dubbo把返回值封装成了DefaultFuture,里面包含一个response.

返回值的赋值过程。

有个NettyHandler(dubbo的实现类),由于实现了SimpleChannelHandler,并提供了messageReceived,所以有返回值的时候会被调用。

@Override
    public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.getChannel(), url, handler);
        try {
            handler.received(channel, e.getMessage());
        } finally {
            NettyChannel.removeChannelIfDisconnected(ctx.getChannel());
        }
    }


这个handler就是HeaderExchangeHandler,它的received(Channel, Message)里面有handleResponse方法,会把返回值付给DefaultFuture的response。

0 0
原创粉丝点击