当前位置:   article > 正文

spark2.1.0之源码分析——服务端RPC处理器RpcHandler详解

rpchandler

 

提示:阅读本文前最好先阅读:

  1. 《Spark2.1.0之内置RPC框架》
  2. 《spark2.1.0之源码分析——RPC配置TransportConf》
  3. 《spark2.1.0之源码分析——RPC客户端工厂TransportClientFactory》
  4. spark2.1.0之源码分析——RPC服务器TransportServer》
  5. 《spark2.1.0之源码分析——RPC管道初始化》
  6. spark2.1.0之源码分析——RPC传输管道处理器详解

在《spark2.1.0之源码分析——RPC传输管道处理器详解》一文中详细介绍了TransportRequestHandler。

由于TransportRequestHandler实际是把请求消息交给RpcHandler进一步处理的,所以这里对RpcHandler首先做个介绍。RpcHandler是一个抽象类,定义了一些RPC处理器的规范,其主要实现见代码清单1。

代码清单1         RpcHandler的实现

  1. public abstract class RpcHandler {
  2. private static final RpcResponseCallback ONE_WAY_CALLBACK = new OneWayRpcCallback();
  3. public abstract void receive(
  4. TransportClient client,
  5. ByteBuffer message,
  6. RpcResponseCallback callback);
  7. public abstract StreamManager getStreamManager();
  8. public void receive(TransportClient client, ByteBuffer message) {
  9. receive(client, message, ONE_WAY_CALLBACK);
  10. }
  11. public void channelActive(TransportClient client) { }
  12. public void channelInactive(TransportClient client) { }
  13. public void exceptionCaught(Throwable cause, TransportClient client) { }
  14. private static class OneWayRpcCallback implements RpcResponseCallback {
  15. private static final Logger logger = LoggerFactory.getLogger(OneWayRpcCallback.class);
  16. @Override
  17. public void onSuccess(ByteBuffer response) {
  18. logger.warn("Response provided for one-way RPC.");
  19. }
  20. @Override
  21. public void onFailure(Throwable e) {
  22. logger.error("Error response provided for one-way RPC.", e);
  23. }
  24. }
  25. }

代码清单1中RpcHandler的各个方法的作用如下:

  • receive:这是一个抽象方法,用来接收单一的RPC消息,具体处理逻辑需要子类去实现。receive
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/906382
推荐阅读
相关标签
  

闽ICP备14008679号