Ядро реактора - моно - onErrorFlatmap - PullRequest
0 голосов
/ 08 октября 2018

Есть ли способ в Mono вернуть flatMap при наличии ошибки (onErrorFlatMap)

Мой сценарий заключается в том, что мне потребуется SubscriberContext при возникновении ошибки после обработки i.нужно, чтобы та же ошибка распространялась по цепочке

    String test = "test";
    Mono.just(test)
            .map(Integer::valueOf)
            .onErrorMap(error -> Mono.subscriberContext()
                    .map(context -> {
                        System.out.println(error + " --   " + context.getOrDefault("APPID", null));
                        return error;
                    }))
            .subscriberContext(of("APPID", "APP-101"))
            .block();

Это способ, который я нашел, чтобы исправить это, но есть ли лучший способ?

String test = "test";
Mono.just(test)
        .map(Integer::valueOf)
        .onErrorResume(error -> Mono.subscriberContext()
                .flatMap(context -> {
                    System.out.println(error + " --   " + context.getOrDefault("APPID", null));
                    return Mono.error(error);
                }))
        .subscriberContext(of("APPID", "APP-101"))
        .block();

1 Ответ

0 голосов
/ 19 октября 2018

Использование onErrorResume и, в конечном итоге, возврат Mono.error - это правильный и рекомендуемый шаблон для этого варианта использования.

...