关于handler:Consumer最后一个发送请求HandlerTransportClientHandler分析
发送申请Consumer 的Handler解决链最初一个是TransportClientHandler,这个Handler次要是: 1.发动连贯2.申请之前执行HttpClientFilter的beforeSendRequest3.塞入ServiceComb的微服务调用上下文,设置响应回调解决,发送申请 ServiceComb发送申请应用vertx,而vertx网络发送接管构建在netty之上,因此可能异步高并发。 java很大一个特点是向建设大楼的脚手架,一个套在一个下面,举例,serviceComb网络发送与接管是:最根底是jdk,下面是netty,而后是vertx,而后是serviceComb。 1.发动连贯 transport实际上是VertxRestTransport,最终到RestClientInvocation的invoke,这个invoke重点剖析, public void invoke(Invocation invocation, AsyncResponse asyncResp) throws Exception {... Future<HttpClientRequest> requestFuture = createRequest(ipPort, path);...} Future<HttpClientRequest> createRequest(IpPort ipPort, String path) {... return httpClientWithContext.getHttpClient().request(requestOptions);... } public Future<HttpClientRequest> request(RequestOptions options) { ContextInternal ctx = this.vertx.getOrCreateContext(); PromiseInternal<HttpClientRequest> promise = ctx.promise(); this.doRequest(options, promise); return promise.future(); }private void doRequest(HttpMethod method, SocketAddress peerAddress, SocketAddress server, String host, int port, Boolean useSSL, String requestURI, MultiMap headers, long timeout, Boolean followRedirects, ProxyOptions proxyOptions, PromiseInternal<HttpClientRequest> requestPromise) {... this.httpCM.getConnection(eventLoopContext, key, timeout, (ar1) -> {... requestPromise.tryComplete(req);...}...}httpCM 建设连贯胜利后,把requestPromise设置Complete,到此连贯建设实现。 ...