dubbo_信息交换Exchanger

来源:互联网 发布:java.sql.date 格式化 编辑:程序博客网 时间:2024/06/08 03:37

信息交换层(Exchange):封装请求响应模式,同步转异步,以Request和Response为中心,扩展接口为Exchanger、ExchangeChannel、ExchangeClient和ExchangeServer。

Exechangers类是一个单例类,通过static 的两个方法去获取相关实例,具体如下所示:

    public static Exchanger getExchanger(URL url) {        String type = url.getParameter(Constants.EXCHANGER_KEY, Constants.DEFAULT_EXCHANGER);        return getExchanger(type);    }    public static Exchanger getExchanger(String type) {        return ExtensionLoader.getExtensionLoader(Exchanger.class).getExtension(type);    }    private Exchangers(){    }


Exchangers类主要有两个功能,即服务器的绑定和客户端的连接功能,代码如下:

    public static ExchangeServer bind(URL url, ExchangeHandler handler) throws RemotingException {        if (url == null) {            throw new IllegalArgumentException("url == null");        }        if (handler == null) {            throw new IllegalArgumentException("handler == null");        }        url = url.addParameterIfAbsent(Constants.CODEC_KEY, "exchange");        return getExchanger(url).bind(url, handler);    }

    public static ExchangeClient connect(URL url, ExchangeHandler handler) throws RemotingException {        if (url == null) {            throw new IllegalArgumentException("url == null");        }        if (handler == null) {            throw new IllegalArgumentException("handler == null");        }        url = url.addParameterIfAbsent(Constants.CODEC_KEY, "exchange");        return getExchanger(url).connect(url, handler);    }



0 0
原创粉丝点击