在使用Vertx部署后,如何获取对已部署的Verticle的引用?

时间:2016-09-19 18:44:18

标签: java vert.x

我有一个名为AbstractVerticle的服务,它扩展了public class TestService extends AbstractVerticle { @Override public void start() throws Exception { //Do things } }

Vertx vertx = Vertx.vertx();
vertx.deployVerticle(TestService.class.getName());

然后我用这样的vertx部署那个verticle:

use Xclip;
Xclip::copy2("some stuff");

如何在vertx实例化之后获得对部署的TestService的引用?

2 个答案:

答案 0 :(得分:8)

您应该使用替代方法进行部署:

vertx.deployVerticle(TestService.class.getName(), deployment -> {
  if (deployment.succeeded()) {
    // here is your ID
    String deploymentId = deployment.result();
  } else {
    // deployment failed...
  }
});

如果您只想列出所有部署的Verticle,那么您只需要请求id列表:

vertx.deploymentIDs()

答案 1 :(得分:2)

我知道这个问题很旧,但是对于某人来说如何做一个例子可能很有用。

您经常会看到像from vertx-examples这样的部署示例
这是异步微服务框架,但是它很容易获得引用,因为方法'deployVerticle'(请参阅链接中的第29行)将采用一个实例,如下面的简单示例所示,您可以在如图所示回呼。

在Kotlin中的示例可以轻松地翻译成java

MyVert: io.vertx.core.AbstractVerticle() {  
    override fun start() {  
    // init  
     } 
    fun someFunction() {
    }
}  

fun main() {
 val vertx = Vertx.vertx()
 val myVert = MyVert()

 vertx.deployVerticle(myVert) {
    if(it.succeeded()  ) {
        myVert.someFunction()
    }
    else { println(it.cause().localizedMessage)}   }
}