0

我正在编写一个简单的 vertx Verticle,它在 start 方法中加载一个配置文件:

public void start(Promise<Void> startPromise) {}

我最初使用:

public void start( final Future<Void> startFuture )

但这种方法已被弃用。

我正在使用这段代码:

ConfigStoreOptions store = new ConfigStoreOptions().setType("file").setFormat("yaml")
        .setConfig(new JsonObject().put("path", MICROSERVICE_CONFIG_FILE));

ConfigRetriever retriever = ConfigRetriever.create(vertx, new ConfigRetrieverOptions().addStore(store));

retriever.getConfig(ar -> {
    if (ar.failed()) {
        // Failed to retrieve the configuration
        logger.error("Error retrieving service configuration");
    } else {
        config = ar.result();
        this.startService(startPromise);
    }
});

然后,在被调用的“startService”方法中,我完成了 startPromise。

每隔几秒钟我就会看到两个新线程被创建:

vert.x-internal-blocking
vert.x-worker-thread-N

如果我不加载配置文件,这些不会被创建。我是否误解了如何使用 vertx-config 异步加载配置文件?

4

1 回答 1

1

ConfigurationRetriever文档中:

配置检索器定期检索配置,如果结果与当前不同,您的应用程序可以重新配置。默认情况下,配置每 5 秒重新加载一次。

https://vertx.io/docs/vertx-config/java/#_listening_for_configuration_changes

这就是你所看到的。

于 2020-03-21T14:17:48.560 回答