如何设置VertxOptions以在每个Verticle中使用?

时间:2017-04-03 19:51:51

标签: vert.x

Vertx是否有一种简单的方法来设置创建所有Verticle时将使用的选项?

在交互式调试器中调试Vertx时,需要设置一些选项以防止Vertx监视程序代码(例如,BlockedThreadChecker)抛出异常。

问题是我不确定如何设置Vertx选项,因此Vertx.vertx()工厂方法返回的所有Vertx实例都会使用它们。

例如,

public static void main(String[] args){
    VertxOptions vertxOptions = new VertxOptions();
    vertxOptions.setBlockedThreadCheckInterval(999888777666L);
    vertxOptions.setMaxEventLoopTime(999888777666L);
    Vertx myVertx = Vertx.vertx(vertxOptions);          // (A)
    Verticle myVerticle = new MyVerticle();             // (B)
    myVertx.depoyVerticle(myVerticle);                  // (C)

    App myApp = new App();
    myApp.run();
}

public void run(){
    Vertx vertx = Vertx.vertx();                        // (D)
    vertx.deployVerticle(new AnotherVerticle());
}

Some other code 
class AnotherVerticle extends AbstractVerticle {
    public void someOtherCode(){
        Verticle myVerticle = new MyVerticle();         // (E)
        vertx.deployVerticle(myVerticle);               // (F)
    }
 }

步骤(A)创建一个设置了选项的Vertx实例。通过试验和错误,当此实例用于部署Verticle时,Vertx BlockedThreadChecker不会抱怨。

在步骤(B)中,在AbstractVerticle中创建一个新的Vertx实例如何在步骤(A)中设置选项?

此外,在其他已实现Verticle的类中(如(E)和(F)),如何使用步骤(A)中使用的相同选项创建Vertx实例。

如果没有正确执行此操作,我会看到接收堆栈跟踪消息,如

WARNING: Thread Thread[vert.x-eventloop-thread-0,5,main] has been blocked for 5853 ms, time limit is 2000
    io.vertx.core.VertxException: Thread blocked
    ...

1 个答案:

答案 0 :(得分:1)

您可以从单个VertxOptions创建新的JsonObject个实例。

但为什么你首先需要所有Vert.x实例?在大多数情况下,每个进程应该有一个Vert.x实例。