2016-07-01 12 views
0

Verticleが正常に展開された後、このコードのコールバックが実行されないのはなぜですか?予期せぬVertx展開インスタンスの動作

public class VertxApp{ 
public static void main(String[] args) { 
    Vertx.vertx().deployVerticle(new MyVerticle(), res -> { 
     System.out.println(res.result()); 
    }); 
} 
} 

MyVerticleクラス:

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!"); 
} 
} 

答えて

1

あなたが展開して終了することVert.xを伝えることはありません。 Vert.xMyVerticle.start(...)となり、Future<Void> startFutureとなります。初期化が完了したら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(); 
    } 
} 

それとも、(Futureなし)AbstractVerticle.start()を上書きすることができます:

class MyVerticle2 extends AbstractVerticle { 
    @Override 
    public void start() { 
    System.out.println("MyVerticle2 started!"); 
    } 

    @Override 
    public void stop() throws Exception { 
    System.out.println("MyVerticle2 stopped!"); 
    } 
} 
関連する問題