Java 如何以编程方式停止Vert.x垂直体?
假设我有一个类似这样的竖线(有意简化以便于解释我的问题)Java 如何以编程方式停止Vert.x垂直体?,java,vert.x,vertx-verticle,Java,Vert.x,Vertx Verticle,假设我有一个类似这样的竖线(有意简化以便于解释我的问题) 对Vert.x有更多经验的人知道如何做到这一点吗?或者有人给我一些建议,告诉我什么是正确的替代方法?让我们将其分为两部分: 如何取消垂直部署 如何在业务逻辑和VertX之间进行通信 下面是一个垂直体在5秒后自行解除部署的示例 class StoppingVerticle extends AbstractVerticle { @Override public void start() { System.o
对Vert.x有更多经验的人知道如何做到这一点吗?或者有人给我一些建议,告诉我什么是正确的替代方法?让我们将其分为两部分:
class StoppingVerticle extends AbstractVerticle {
@Override
public void start() {
System.out.println("Starting");
vertx.setTimer(TimeUnit.SECONDS.toMillis(5), (h) -> {
vertx.undeploy(deploymentID());
});
}
@Override
public void stop() {
System.out.println("Stopping");
}
}
您只需使用垂直标识符调用undeploy()
:deploymentID()
现在,您肯定不想将VertX实例传递给您的服务。相反,您可以使用以下接口:
interface UndeployableVerticle {
void undeploy();
}
您实施并传递给您的服务:
public class ServiceVerticle extends AbstractVerticle implements UndeployableVerticle {
private MyService myService = new MyService(this);
...
}
那么就这样称呼它:
public void onEvent(Event event) {
this.verticle.undeploy();
}
public class ServiceVerticle extends AbstractVerticle implements UndeployableVerticle {
private MyService myService = new MyService(this);
...
}
public void onEvent(Event event) {
this.verticle.undeploy();
}