首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vertx3: HTTP服务器的Handler<RoutingContext>是在event/run循环中执行,还是在单独的thred中执行?

Vertx3: HTTP服务器的Handler<RoutingContext>是在event/run循环中执行,还是在单独的thred中执行?
EN

Stack Overflow用户
提问于 2017-01-17 19:47:40
回答 1查看 384关注 0票数 0

问候;

我想知道我是否创建了一个vertx httpServer并添加了一个处理程序类来处理请求。处理程序实例中的代码是在同一线程(事件循环线程)中执行,还是在单独的线程/线程池中异步执行,不会减慢HTTPServer侦听新请求操作的速度?

目前,我只有一个Handler实例(一个实现Handler接口的spring signelton bean )。当许多HTTP请求到达httpserver时,处理程序代码处理请求的速度会很慢(请求在很长一段时间后才会执行,但不会抛出vertx ThreadBlocked异常)

EN

回答 1

Stack Overflow用户

发布于 2017-01-21 04:00:55

简短的回答是肯定的。每个服务器垂直节点都绑定到一个事件循环线程。每个处理程序都绑定到相同的线程。这很容易检查:

代码语言:javascript
复制
public static void main(String[] args) {
    Vertx vertx = Vertx.vertx();

    vertx.deployVerticle(new ServerVerticle());
}

public static class ServerVerticle extends AbstractVerticle {

    @Override
    public void start() {
        Router router = Router.router(vertx);
        router.get("/").handler((r) -> {
            System.out.println("Handler " + Thread.currentThread().getName());
            r.response().end("");
        });


        System.out.println("Main verticle " + Thread.currentThread().getName());
        vertx.createHttpServer().requestHandler(router::accept).listen(8888);
    }
}

访问服务器,您会注意到您的处理程序与服务器在同一个事件循环线程上。

如果您有运行缓慢的处理程序,请使用EventBus和worker verticle:

http://vertx.io/docs/vertx-core/groovy/#worker_verticles

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41696328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档