java - Reactor Core - Mono - onError Flatmap

标签 java spring spring-boot project-reactor reactor

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

最佳答案

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

关于java - Reactor Core - Mono - onError Flatmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52697826/

相关文章:

java - JSONObject getString 在第一次运行时返回 null

java - 当对象通过 post 命令发送到 spring WebApp 时,对象字段为 null

java - 最佳实践 : Creation of SAX parser for XMLReader

java - 使用 spring boot 自定义 keycloak 错误页面

java - 是否可以在 Spring-Boot Web 应用程序中使用 Java 的 Socket API?

java - 为什么 sendError 返回空响应体

java - hibernate 菜鸟 : criteria to fetch not mapped relationship

java - Spring Controller 向ajax请求返回 View 或空字符串

java - 如何根据不同组合框的所选项目更改组合框选项

java - 使用 Spring Data 从嵌入式 neo4j 迁移到 REST