MainVerticle的引导版本x

问题描述 投票:3回答:1

我一直在玩各种示例,似乎无法走出奇怪的角落。根据我从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中?

[如果我也想使用聚类,请预先计划,使用main并从那里引导是正确的方法吗?如果这样做,我仍然可以利用gradle重建和重新部署更改的魔力吗?

java vert.x
1个回答
0
投票

您绝对不想在您的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());
}
© www.soinside.com 2019 - 2024. All rights reserved.