Использование vetx-config для асинхронной загрузки файла конфигурации

Я пишу простую вершинную вершину, которая загружает файл конфигурации в методе запуска:

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?


person Mike Stoddart    schedule 19.03.2020    source источник


Ответы (1)


Из документации ConfigurationRetriever:

Средство восстановления конфигурации периодически извлекает конфигурацию, и, если результат отличается от текущего, ваше приложение может быть перенастроено. По умолчанию конфигурация перезагружается каждые 5 секунд.

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

Это то, что вы видите.

person Alexey Soshin    schedule 21.03.2020
comment
Правильно, конечно! Я не думал об этом. Спасибо Алексей. - person Mike Stoddart; 22.03.2020