Spring reactor加入2 Mono

Mar*_*k O 0 reactor spring-boot project-reactor

我需要使用 spring 反应器以反应方式连接到数据库。这是我想得到的场景->

  1. 1.连接到数据库并获得响应1

    2.然后连接到db并获得response2,同时提供response1.parameter

    1. 将这两个加入单个响应并作为字符串发送回用户

由于所有对象都是独一无二的,我计划使用 Mono

Mono<Response1> r1 = qrepo.findByID(id)
Mono<Response2> r2 = qrepo.findByID(r1.getParam())

Mono<String> combined = Mono.when(r1, r2).map(t -> { 
            StringBuffer sb = new StringBuffer();
                sb.append(r1.getProp1());
                sb.append(r2.getProp2());
Run Code Online (Sandbox Code Playgroud)

但这对我不起作用

Ale*_*kin 5

您应该得到 response1 然后 flatMap 其结果以访问参数并将其传递给存储库然后将结果映射到字符串

    Mono<String> resultMono = qrepo.findByID(id)
            .flatMap(response1 -> qrepo.findByID(response1.getParam())
                    .map(response2 -> {
                        StringBuilder sb = new StringBuilder();
                        sb.append(response1.getProp1());
                        sb.append(response2.getProp2());
                        return sb.toString();
                    }));
Run Code Online (Sandbox Code Playgroud)