0

我正在尝试这个

router.put(/api).handler(TimeoutHandler.create(100,404)); router.put(/api).blockingHandler(this::handlebusinesslogic); 
handlebusinesslogic{
Thread.sleep(1000);
reponse.setstatuscode(200);
reponse.end();}

仍然,我看到 200 ok 响应而不是 404 响应。代码中是否缺少某些内容。有没有其他方法可以做到这一点。

有没有办法为所有 HTTP 请求设置一般超时?

4

2 回答 2

0

你可以试试这个

  1. setConnectTimeout(int connectTimeout)
  2. setHttp2KeepAliveTimeout(int keepAliveTimeout)
  3. setIdleTimeout(int idleTimeout)

尝试更改这些值。#1 应该满足您的要求。

于 2021-10-06T06:16:53.577 回答
0

那是因为你不应该Thread.sleep()在 Vert.x 中测试任何东西时使用
在你的情况下,这也会阻塞超时处理程序,防止超时。

以下是您应该如何测试它:

        Vertx vertx = Vertx.vertx();

        Router router = Router.router(vertx);

        router.route().handler(TimeoutHandler.create(100, 404));
        router.route().handler(event -> {
            // Instead of blocking the thread, set a long timer 
            // that simulates your long ASYNCHRONOUS request
            vertx.setTimer(1000, (l) -> {
                event.response().end("OK!");
            });
        });
        
        vertx.createHttpServer().requestHandler(router).listen(8080);

此示例将按预期返回 404。

于 2020-08-14T08:51:49.477 回答