开发者社区 > 云原生 > 正文

HeaderExchangeChannel 类的 send 方法是否能直接调用 channel.se

我使用的是 dubbo2.7.2

我看了下 github 上的最新源码,如下:

public void send(Object message, boolean sent) throws RemotingException { if (closed) { throw new RemotingException(this.getLocalAddress(), null, "Failed to send message " + message + ", cause: The channel " + this + " is closed!"); } if (message instanceof Request || message instanceof Response || message instanceof String) { channel.send(message, sent); } else { Request request = new Request(); request.setVersion(Version.getProtocolVersion()); request.setTwoWay(false); request.setData(message); channel.send(request, sent); } }

为啥不能直接调用 channel.send(message, sent) ?这是基于什么考虑了?

原提问者GitHub用户xiaoheng1

展开
收起
大圣东游 2023-05-11 20:12:33 103 0
1 条回答
写回答
取消 提交回答
  • 我觉得这是基于装饰者模式考虑的,HeaderExchangeChannel 的职责就是用Request对象包装请求体,但是如果之前已经有装饰器对请求体做过包装了,那就没必要再包装一层了,这是我的理解,不知道正不正确

    原回答者GitHub用户bigwg

    2023-05-12 12:11:30
    赞同 展开评论 打赏
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载