Vertx-InfluxDB指标保持连接打开

时间:2018-06-20 09:55:02

标签: java metrics vert.x influxdb micrometer

我试图通过InfluxDB实例将指标报告合并到我的Vertx应用程序中。但是,当我尝试正常结束应用程序时,某处有一个挂起的线程。我设法将其跟踪到InfluxDB连接以进行vertx的指标报告,或者看起来如此,但是我没有找到杀死它的方法。谁能指出我正确的方向?

一个最小的工作示例(如果禁用指标,则应用程序正常运行,否则将挂起):

import io.vertx.core.Vertx;
import io.vertx.core.VertxOptions;
import io.vertx.micrometer.MicrometerMetricsOptions;
import io.vertx.micrometer.VertxInfluxDbOptions;
import io.vertx.micrometer.backends.BackendRegistries;

public class MWE {
    public static void main(String[] args) {
        //setting up the metric options for influxdb. seems to work in MWE without credentials
        MicrometerMetricsOptions metricsOptions = new MicrometerMetricsOptions()
                .setRegistryName("data-client")
                .setInfluxDbOptions(new VertxInfluxDbOptions()
                        //disabling this would make sure the application _does_ gracefully exit
                        .setEnabled(true)
                )
                .setEnabled(true);

        //setting up the vertx instance
        Vertx vertx = Vertx.vertx(
                new VertxOptions()
                        .setMetricsOptions(metricsOptions)
                        .setWorkerPoolSize(50)
        );

        //stop vertx after a second
        vertx.setTimer(1000, timerID -> {
            //closing the vertx instance
            vertx.close(result -> System.out.println("Vertx was closed."));
            //closing the registry of metrics to influxdb
            BackendRegistries.getNow("data-client").close();
            System.out.println("Closed everything");
        });

        System.out.println("Done with main");
    }
}

1 个答案:

答案 0 :(得分:0)

如GitHub问题跟踪器(https://github.com/vert-x3/vertx-micrometer-metrics/issues/36)所述,这是千分尺1.0.0版中的一个问题。将版本升级到1.0.5可以临时修复该错误,并等待vertx-micrometer-metrics更新对测微表的依赖关系。