【问题标题】:Reactor Core - Mono - onErrorFlatmap反应堆核心 - 单声道 - onErrorFlatmap
【发布时间】:2018-10-08 08:00:00
【问题描述】:

Mono 中有没有办法在出现错误时返回 flatMap(onErrorFlatMap)

我的情况是,当处理后出现错误时我需要 SubscriberContext 我需要将相同的错误沿链传播

    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();

【问题讨论】:

    标签: java spring spring-boot project-reactor reactor


    【解决方案1】:

    使用onErrorResume 并最终返回Mono.error 是此用例的正确且推荐的模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      相关资源
      最近更新 更多