Vertx是否有一種簡單的方法來設置創建所有Verticle時將使用的選項?如何設置VertxOptions以便在每個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如何獲得步驟(A)中設置的選項時,會創建一個新的Vertx實例?
此外,在具有實現其它類Verticles(如(E)和(F),如何能那些Vertx情況下可以用)在步驟(A所用的相同的選項創建的。
在不正確地這樣做,我看到接收到類似
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
...
我不一定需要多個Vertx實例,但是如果我有多個擴展AbstractVerticle的類,那麼每個類都是自己唯一的Vertx實例。一位同事建議我監聽配置更改,然後將配置更改應用於每個Vertx實例。我還沒有看過這樣做。 – PatS
這是不正確的。如果您使用單個Vert.x實例部署所有Verticle,則不會創建其他實例。 – tsegismont
我沒有使用deploy vertical,只是用新的MyClass(它擴展了AbstractVerticle)創建它們。我在我的方式中看到了錯誤,你說的話很有道理!燈泡的時刻。謝謝 – PatS