SpringWebFlux doOnError обработка - PullRequest
0 голосов
/ 31 мая 2019

В нашем проекте у нас есть некоторый запасной вариант на случай, если что-то плохое произошло, и обрабатывается doOnError . Меня беспокоит только то, что, возможно, оператор doOnError используется неправильно. Итак, давайте посмотрим на следующий пример:

callService1()
.flatMap(service1Response -> {
  //process service1Response
})
.doOnError(callService2.subscribe())

Когда поток поступает в doOnError, мы вызываем другую службу.

В doOnError нам нужно подписать вручную на Mono, извлеченный callService2 , чтобы выполнить код, и, кроме того, если в doOnError выдается ошибка, то Ошибка не отслеживается нашим GlobalErrorHandler.

Должны ли мы переосмыслить нашу обработку ошибок в этом случае? Я бы очень хотел не подписываться вручную на издателя. Как вы думаете ? Спасибо заранее.

1 Ответ

0 голосов
/ 10 июня 2019

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

callService1()
.flatMap(service1Response -> {
  //process service1Response
})
.onErrorResume(err -> callService2())
...