意外的 Vertx 部署实例行为
Unexpected Vertx deploy instance behaviour
不明白为什么Verticle部署成功后这段代码的回调没有执行?
public class VertxApp{
public static void main(String[] args) {
Vertx.vertx().deployVerticle(new MyVerticle(), res -> {
System.out.println(res.result());
});
}
}
MyVerticle class:
public class MyVerticle extends AbstractVerticle {
@Override
public void start(Future<Void> startFuture) {
System.out.println("MyVerticle started!");
}
@Override
public void stop(Future stopFuture) throws Exception {
System.out.println("MyVerticle stopped!");
}
}
您永远不会告诉 Vert.x
您已完成部署。 Vert.x
用 Future<Void> startFuture
呼叫你的 MyVerticle.start(...)
。完成初始化后,您需要调用 startFuture.complete()
。 MyVerticle.stop(...)
.
相同
class MyVerticle extends AbstractVerticle {
@Override
public void start(Future<Void> startFuture) {
System.out.println("MyVerticle started!");
startFuture.complete();
}
@Override
public void stop(Future stopFuture) throws Exception {
System.out.println("MyVerticle stopped!");
stopFuture.complete();
}
}
或者您可以像这样覆盖 AbstractVerticle.start()
(没有 Future
):
class MyVerticle2 extends AbstractVerticle {
@Override
public void start() {
System.out.println("MyVerticle2 started!");
}
@Override
public void stop() throws Exception {
System.out.println("MyVerticle2 stopped!");
}
}
不明白为什么Verticle部署成功后这段代码的回调没有执行?
public class VertxApp{
public static void main(String[] args) {
Vertx.vertx().deployVerticle(new MyVerticle(), res -> {
System.out.println(res.result());
});
}
}
MyVerticle class:
public class MyVerticle extends AbstractVerticle {
@Override
public void start(Future<Void> startFuture) {
System.out.println("MyVerticle started!");
}
@Override
public void stop(Future stopFuture) throws Exception {
System.out.println("MyVerticle stopped!");
}
}
您永远不会告诉 Vert.x
您已完成部署。 Vert.x
用 Future<Void> startFuture
呼叫你的 MyVerticle.start(...)
。完成初始化后,您需要调用 startFuture.complete()
。 MyVerticle.stop(...)
.
class MyVerticle extends AbstractVerticle {
@Override
public void start(Future<Void> startFuture) {
System.out.println("MyVerticle started!");
startFuture.complete();
}
@Override
public void stop(Future stopFuture) throws Exception {
System.out.println("MyVerticle stopped!");
stopFuture.complete();
}
}
或者您可以像这样覆盖 AbstractVerticle.start()
(没有 Future
):
class MyVerticle2 extends AbstractVerticle {
@Override
public void start() {
System.out.println("MyVerticle2 started!");
}
@Override
public void stop() throws Exception {
System.out.println("MyVerticle2 stopped!");
}
}