Java HttpHandler上的非阻塞HTTP请求
据我所知,如果在底层HTTP处理程序上有任何阻塞操作,我必须遵循以下模式:Java HttpHandler上的非阻塞HTTP请求,java,undertow,Java,Undertow,据我所知,如果在底层HTTP处理程序上有任何阻塞操作,我必须遵循以下模式: public void handleRequest(final HttpServerExchange exchange) throws Exception { if (exchange.isInIoThread()) { exchange.dispatch(this); return; } // Do any blocking action like normal http
public void handleRequest(final HttpServerExchange exchange) throws Exception {
if (exchange.isInIoThread()) {
exchange.dispatch(this);
return;
}
// Do any blocking action like normal http calls...
}
但是我使用awesomeorg.asynchttpclient
库来进行如下异步HTTP调用:
public void handleRequest(HttpServerExchange exchange) throws Exception {
new DefaultAsyncHttpClient().prepareGet("http://some/url").execute()
.toCompletableFuture()
.thenApply(r -> {
exchange.getResponseSender().send("OK");
return r;
});
}
问题是exchange从不发送“OK”输出(“OK”不会打印到响应中),当我试图编写它时,它似乎已经关闭了
不管你怎么处理这种情况。总的来说,它比解决方案一有什么优势吗