Разница между onErrorResume и doOnError - PullRequest
0 голосов
/ 30 сентября 2019

В проекте весеннего реактора, в чем различия между onErrorResume и doOnError? и когда я должен каждый из них?

1 Ответ

2 голосов
/ 01 октября 2019

onErrorResume: создает резервный поток при возникновении некоторого исключения в восходящем потоке.

doOnError: оператор побочного эффекта. Предположим, вы хотите записать, какая ошибка происходит в восходящем потоке.

Пример:

Mono.just(request)
.flatMap(this::makeHTTPGet)
.doOnError(err -> {
        log.error("Some error occurred while making the POST call",err)
    })
.onErrorResume(err -> Mono.just(getFallbackResponse()));

Видите ли, doOnError является оператором побочного эффекта. Это как вставить термометр в водопровод и измерить температуру. Влияет ли это на конвейер вообще? Нет.

Предположим, теперь, когда трубопровод сломан - город все еще должен получить воду правильно? Таким образом, у нас есть запасной конвейер, который можно активировать в таких случаях. onErrorResume делает именно это.

Примечание: Вы также можете войти в систему onErrorResume. Ничто не мешает вам сделать это.

...