Java 如何在Vertex 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());

我正在尝试在vert.x web客户端中设置requestTimeout。但它并没有像预期的那样工作

响应时间小于10ms的api正在从设置了100ms requestTimeout的webclient超时。服务器和客户端都在我的本地计算机上运行

@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)