Ожидает ли приложение выполнения подписчика CommandLinerRunner run () (успех, ошибка) или контролирует возврат в основной поток после регистрации подписчика - PullRequest
0 голосов
/ 09 января 2020

В CommandLineRunner:

@Override
public void run(String... args) throws Exception {
    // TODO Auto-generated method stub
    iRedisCacheRepository.loadAllRuleGroups().subscribe(
        success -> redisResultSubscriber.accept(success),
        error -> redisErrorSubscriber.accept(error)
    );
}

Когда реализовано приложение остального API с параметром CommandLineRunner run(), содержащее subscribe(success,error), становится ли приложение доступным для запросов http api rest только тогда, когда run() подписчик (либо успех, либо ошибка) выполнен? или поскольку subscribe() имеет асинхронный характер , как только подписчик зарегистрирован, управление возвращается к основному потоку и приложение становится доступным для операций покоя?

1 Ответ

0 голосов
/ 10 января 2020

Если Mono / Flux публикует свой результат в другом потоке (что обычно имеет место), тогда он НЕ ждет.

Вам необходимо позвонить block(), если вы хочу подождать.

...