java - 从 MainVerticle 引导 vert.x

标签 java vert.x

我一直在研究各种示例,但似乎无法找到摆脱奇怪角落的方法。根据我从 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。这会引发警告; 您已经在 Vert.x 上下文中,确定要创建新的 Vertx 实例吗?

我认为我不想要一个新实例(或者我想要吗?),所以我正在寻找一种使用 Vertx.currentContext().owner() 的方法,因为这是根我正在运行 Vertx。我不仅找不到将 VertxOptions 注入(inject)其中的方法,而且还无法部署 verticle,因为我收到了新的异常; [错误] i.v.c.i.DeploymentManager - NULL(java.lang.NullPointerException:null)

所以广泛的问题是;如何正确引导我的代码?更具体地说,该警告是预期的/正常的吗?如果没有,我如何实际注入(inject)指标并将 verticle 部署到根 Vertx 中?

提前计划,如果我也想使用集群,那么使用 main 和 bootstrap 是正确的方法吗?如果我这样做,我仍然可以利用 gradle 重新构建和更改部署的魔力吗?

最佳答案

你绝对不想在你的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());
}

关于java - 从 MainVerticle 引导 vert.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59475045/

相关文章:

java - 如何设置一个类对另一个类可见?

Java for循环,初始化变量满足终止要求但循环没有终止

java - Vert.x Http 请求未将参数分配为配置

java - 两个互相隔离的顶点实例

java - 如何使用 while() 循环在 vertx 上运行无限循环

java - 方法返回与方法中创建的数组不同

带有 Spring 的 JavaMail - 缺少导入

java - 在实例初始化程序调用的方法中记录期望

java - 在将 Quarkus Hibernate Reactive 与 quarkus-reactive-client 一起使用时如何使用一些阻止方法?

java - 将 JCEKS keystore 加载到 Vert.x