Dubbo 消费者接收原理

版权声明:本文为博主原创文章,未经博主允许不得转载。http://mp.blog.csdn.net/configure#i https://blog.csdn.net/wangming520liwei/article/details/88235787

                                            Dubbo 消费者接收原理

/consumer的接收原理 
NettyHandler.messageReceived
  -->AbstractPeer.received
    -->MultiMessageHandler.received
      -->HeartbeatHandler.received
        -->AllChannelHandler.received
          -->ChannelEventRunnable.run //线程池 执行线程
            -->DecodeHandler.received
              -->HeaderExchangeHandler.received
                -->handleResponse(channel, (Response) message);
                  -->HeaderExchangeHandler.handleResponse
                    -->DefaultFuture.received
                      -->DefaultFuture.doReceived
                        private void doReceived(Response res) {
                       lock.lock();
                       try {
                           response = res;
                           if (done != null) {
                               done.signal();
                           }
                       } finally {
                           lock.unlock();
                       }
                       if (callback != null) {
                           invokeCallback(callback);
                       }
                   }

怎么理解这个接收原理?

接收到一个请求,启动一个线程任务

{cpcn.payment.wechatmessageapi.rpc.WeChatSendingAlarmService:1.0.0:6310=com.alibaba.dubbo.registry.integration.RegistryProtocol$InvokerDelegete@73b708dc}

总结下,服务暴露 ,其实是将invoker 放到exporter中,当有消费者调用时,通过netty 接收到了 接口,参数等信息,

接收到参数信息后,组成 servicekey ,从exporterMap中找到对应的 invoker ,然后调用invoker.invoke方法得到结果

猜你喜欢

转载自blog.csdn.net/wangming520liwei/article/details/88235787