-
在Elasticsearch启动的时候会同时启动一个netty服务进行监听,这个服务用来处理所有的HTTP请求。
Netty4HttpRequestHandler
-
当请求到达时,从
channelRead0(ChannelHandlerContext ctx, HttpPipelinedRequest<FullHttpRequest> msg)
进入,获取请求内容然后简单封装Netty4HttpRequest
,接下来交给Netty4HttpServerTransport
-
执行
serverTransport.incomingRequest(httpRequest, channel)
,这里先封装了一个RestRequest
,然后创建了一个RestChannel
进行发送响应,然后执行dispatchRequest(restRequest, channel, badRequestCause);
,这里调用的是RestController
的方法 -
执行
ryAllHandlers(final RestRequest request, final RestChannel channel, final ThreadContext threadContext)
,这个请求尝试索引可能的操作,然后对需要执行的操作进行调用dispatchRequest(final RestRequest request, final RestChannel channel, final NodeClient client, final Optional<RestHandler> mHandler) throws Exception
,如果成功执行,则让channal发送响应,同时返回true -
判断操作的不同执行不同的请求。对于大多数常用的请求会执行
wrappedHandler.handleRequest(request, responseChannel, client);
-
调用
BaseRestHandler
的action.accept(channel);
-
提交任务。。
网友评论