我一直在尝试各种例子,似乎找不到走出一个奇怪的角落的方法。根据我从vertx.io获得的初学者工具包,MainVerticle是我的入口点。因为我想连接一些指标,所以我这样做;
public void start(Promise<Void> startPromise) {
...
MetricsOptions metricsOptions = new MicrometerMetricsOptions()
.setPrometheusOptions(new VertxPrometheusOptions().setEnabled(true))
.setEnabled(true);
VertxOptions vertxOptions = new VertxOptions().setMetricsOptions(metricsOptions);
Vertx vertx = Vertx.vertx(vertxOptions);
DeploymentOptions deploymentOptions = new DeploymentOptions().setInstances(2);
vertx.deployVerticle(ApiRootVerticle.class, deploymentOptions);
...
}所以基本上就是创建我的VertxOptions,创建一个新的vertx实例,然后部署我的Verticle。这会抛出一个警告;You're already on a Vert.x context, are you sure you want to create a new Vertx instance?
我假设我不需要新的实例(或者我需要?),所以我正在寻找一种使用Vertx.currentContext().owner()的方法,因为它是我运行的根Vertx。我不仅找不到一种方法将我的VertxOptions注入其中,而且我也不能部署一个verticle,因为我得到了一个新的异常;[ERROR] i.v.c.i.DeploymentManager - NULL (java.lang.NullPointerException: null)
所以广泛的问题是:我如何正确地引导我的代码?更具体地说,这是预期的/正常的警告吗?如果不是,我如何将指标注入到根Vertx中并部署verticles?
提前计划,如果我还想使用集群,从那里使用main和bootstrap是正确的方法吗?如果我这样做了,我还能利用gradle重新构建和重新部署更改的魔力吗?
发布于 2019-12-28 05:59:34
你肯定不想在你的verticle中启动Vert.x实例:
Vertx vertx = Vertx.vertx(vertxOptions);
有几种方法可以控制Vert.x的启动选项,但我建议你还是老办法自己开始吧:
public static void main(String[] args) {
MetricsOptions metricsOptions = new MicrometerMetricsOptions()
.setPrometheusOptions(new VertxPrometheusOptions().setEnabled(true))
.setEnabled(true);
VertxOptions vertxOptions = new VertxOptions().setMetricsOptions(metricsOptions);
Vertx vertx = Vertx.vertx(vertxOptions);
vertx.deployVerticle(new MainVerticle());
}https://stackoverflow.com/questions/59475045
复制相似问题