在向api调用许多请求时Vertx延迟

时间:2017-03-20 06:20:32

标签: vert.x vertx-httpclient

这是我的代码。它似乎只执行1个请求

public class RestFulService extends AbstractVerticle  {

    @Override
    public void start() throws Exception {

        Router router = Router.router(vertx);


        router.get("/test/hello/:input").handler(new Handler<RoutingContext>() {
            @Override
            public void handle(RoutingContext routingContext) {

                WorkerExecutor executor = vertx.createSharedWorkerExecutor("my-worker-pool",10,120000);
                executor.executeBlocking(future -> {


                    try {
                        Thread.sleep(5000);
                        future.complete();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }


                },false, res -> {
                    System.out.println("The result is: " + res.result());
                    routingContext.response().end("routing1"+res.result());
                    executor.close();
                });



            }
        });


}

当我同时从浏览器拨打10个请求时,需要50000ms完成所有请求。 请指导我修复它。

1 个答案:

答案 0 :(得分:0)

尝试使用curl,我怀疑您的浏览器对所有请求使用相同的连接(因此在发送下一个请求之前等待响应)。

顺便说一下,您不需要在每个请求上拨打createSharedWorkerExecutor。启动Verticle时可以执行一次。