Как обрабатывать исключения, используя синхронный вызов Spring Webclient? - PullRequest
0 голосов
/ 26 февраля 2020

Я создал класс обслуживания для вызова API:

ServiceA {
  public B sendReceive(Request req) {
    return Optional.of(req).map(this::transform).map(apiService::call);
  }
  private ApiRequest transform(Request req) {
    ...
  }
}

ApiService {
  public B call(ApiRequest req) {
    return webClient.post().bodyValue(req).bodyToMono().block();
  }

@ControllerAdvice
ExceptionManager {
  @ExceptionHandler(Exception.class)
  public ResponseEntity handle(Exception ex) {
    ...
  }
}

Я попытался создать исключение в методе transform для проверки класса ControllerAdvice, но он не работает. Исключение переходит непосредственно в класс InvocableHandlerMethod вместо класса ExceptionManager, который находится внутри реактивного пакета.

Поскольку я не использую Mono / Flux, типичный .onError не будет работать для моего случая.

Как мне заставить работать ControllerAdvice? Или как мне обработать исключение в блокирующем вызове?

...