Функция обработки исключений Mono.map () — возвращает Mono.empty()

#spring-webflux

Вопрос:

У меня есть клиент rest, который возвращает объект json. У меня есть другой метод, который вызывает этот метод, преобразует json в мой собственный объект и возвращает его. Я хочу обработать сценарий, в котором json недействителен. Я думаю, что было бы лучше зарегистрировать проблему (в моем случае мне больше ничего не нужно делать) и вернуть Mono.empty (), но я получаю следующую ошибку:

Требуемый тип: Mono MyPOJO, При условии: Монообъект

 public Mono<MyPojo> retrieve(String url) {
return Mono
            .from(restClient.get(url, String.class))
            .map(jsonString -> {
                try {
                    
                    return myPojoMapper.map(jsonString);
                } catch (Exception exception) {
                    log.error("Exception occurred when processing message.", exception);
                    return Mono.empty()
                }
            });
}
 

Ответ №1:

Это и есть решение:

 public Mono<MyPojo> retrieve(String url) {
return Mono
            .from(restClient.get(url, String.class))
            .map(jsonString -> {
            try {                   
                return myPojoMapper.map(jsonString);
            } catch (Exception exception) {
                log.error("Exception occurred when processing message.", exception);
            }
        }).onErrorResume(e -> Mono.empty());
}