使用 Vertx 部署后如何获取对已部署 Verticle 的引用?
How can I get a reference to my deployed verticle after deploying it with Vertx?
我有一个名为 TestService
的服务,它扩展了 AbstractVerticle
:
public class TestService extends AbstractVerticle {
@Override
public void start() throws Exception {
//Do things
}
}
然后我像这样用 vertx 部署那个 verticle:
Vertx vertx = Vertx.vertx();
vertx.deployVerticle(TestService.class.getName());
在 vertx 实例化后,如何获取对已部署的 TestService 的引用?
您应该使用替代方法进行部署:
vertx.deployVerticle(TestService.class.getName(), deployment -> {
if (deployment.succeeded()) {
// here is your ID
String deploymentId = deployment.result();
} else {
// deployment failed...
}
});
如果您只想列出所有已部署的 Verticle,那么您可以只请求 ID 列表:
vertx.deploymentIDs()
我知道这个问题很老了,但是看到一个如何执行此操作的示例可能对某人有用。
您会经常看到这样的部署示例from vertx-examples
这遵循异步微服务框架,但是它真的很容易获得引用,因为方法 'deployVerticle'(参见 link 中的第 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)} }
}
通过这种方式可以获得当前vertx实例中所有部署的verticle
Set<String> strings = vertx.deploymentIDs();
strings
.stream()
.map(id -> ((VertxImpl)vertx.getDelegate()).getDeployment(id))
.forEach(deployment -> System.out.println(deployment.verticleIdentifier() + " " + deployment.isChild() ));
我有一个名为 TestService
的服务,它扩展了 AbstractVerticle
:
public class TestService extends AbstractVerticle {
@Override
public void start() throws Exception {
//Do things
}
}
然后我像这样用 vertx 部署那个 verticle:
Vertx vertx = Vertx.vertx();
vertx.deployVerticle(TestService.class.getName());
在 vertx 实例化后,如何获取对已部署的 TestService 的引用?
您应该使用替代方法进行部署:
vertx.deployVerticle(TestService.class.getName(), deployment -> {
if (deployment.succeeded()) {
// here is your ID
String deploymentId = deployment.result();
} else {
// deployment failed...
}
});
如果您只想列出所有已部署的 Verticle,那么您可以只请求 ID 列表:
vertx.deploymentIDs()
我知道这个问题很老了,但是看到一个如何执行此操作的示例可能对某人有用。
您会经常看到这样的部署示例from vertx-examples
这遵循异步微服务框架,但是它真的很容易获得引用,因为方法 'deployVerticle'(参见 link 中的第 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)} }
}
通过这种方式可以获得当前vertx实例中所有部署的verticle
Set<String> strings = vertx.deploymentIDs();
strings
.stream()
.map(id -> ((VertxImpl)vertx.getDelegate()).getDeployment(id))
.forEach(deployment -> System.out.println(deployment.verticleIdentifier() + " " + deployment.isChild() ));