Mono zip и обработка исключений
как правильно собрать из удаленных сервисов обобщающий класс с использованием Mono zip, если у одной или нескольких получил исключение/ошибку?
.uri(uriBuilder -> uriBuilder.path("/app/hgt")
.build())
.retrieve()
DataNotFoundException(error->error)))
.onStatus(
HttpStatusCode::isError,
clientResponse ->
clientResponse
.bodyToMono(String.class)
.flatMap(
errorResponseBody ->
Mono.error(
new DataNotFoundException(errorResponseBody)
))
)
.bodyToMono(HGTDto.class)
.onErrorResume(throwable -> {
if (throwable instanceof DataNotFoundException) {
HGTDto data = HGTDto.builder().status("inActive").exceptionMessage(throwable.getMessage()).build();
return Mono.just(data);
// return Mono.error(new DataNotFoundException(throwable.getMessage()));
} else throw new RuntimeException("qwerty!");
})
.log()
может не в onErrorResume должен собрать HGTDto, но все же... а далее в зип делаю что то вроде этого
Mono<HGTDto> hgtServiceData = hgtService.getData()
....
return Mono.zip(hgtServiceData, ...,...,...).map(this::combine);
в итоге получаю ничего...