Java 如何在Vertex webclient中设置请求超时
我正在尝试在vert.x web客户端中设置requestTimeout。但它并没有像预期的那样工作 响应时间小于10ms的api正在从设置了100ms requestTimeout的webclient超时。服务器和客户端都在我的本地计算机上运行Java 如何在Vertex webclient中设置请求超时,java,vert.x,Java,Vert.x,我正在尝试在vert.x web客户端中设置requestTimeout。但它并没有像预期的那样工作 响应时间小于10ms的api正在从设置了100ms requestTimeout的webclient超时。服务器和客户端都在我的本地计算机上运行 @Test public void connectionTimeOut() throws InterruptedException { WebClient client = WebClient.create(Vertx.vertx());
@Test
public void connectionTimeOut() throws InterruptedException {
WebClient client = WebClient.create(Vertx.vertx());
client.request(HttpMethod.GET,8000 , "localhost", "/scripts/").timeout(100).send(ar -> {
if (ar.succeeded()) {
System.out.print("Request succeded");
} else {
ar.cause().printStackTrace(); ;
}
});
TimeUnit.MINUTES.sleep(20);
}
如果我将requestTimeout设置为1000ms,同样的代码也可以工作。请告诉我是否有解决方法,或者我是否遗漏了一些内容。您是否在调试模式下运行?否。我已将此作为junit测试用例执行。我建议使用vert.x单元测试框架并使用他们的方法测试您的代码,以了解有关使用它和junit的更多详细信息。然后可以使用异步代码以更自然的方式测试异步代码。在以这种方式进行测试时,您可能也希望使用该对象。是。同意这是测试顶点代码的更好方法。但我认为这不会影响webclient中的requestTimeout。你能用Wireshark确保后端确实回复吗?
java.util.concurrent.TimeoutException: The timeout period of 100ms has been exceeded while executing GET /scripts/ for host localhost
at io.vertx.core.http.impl.HttpClientRequestBase.timeout(HttpClientRequestBase.java:183)
at io.vertx.core.http.impl.HttpClientRequestBase.handleTimeout(HttpClientRequestBase.java:168)
at io.vertx.core.http.impl.HttpClientRequestBase.lambda$setTimeout$0(HttpClientRequestBase.java:126)
at io.vertx.core.impl.VertxImpl$InternalTimerHandler.handle(VertxImpl.java:870)
at io.vertx.core.impl.VertxImpl$InternalTimerHandler.handle(VertxImpl.java:829)
at io.vertx.core.impl.ContextImpl.lambda$wrapTask$2(ContextImpl.java:344)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:163)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:463)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:886)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)