Spring 反应器加入 2 单声道
Spring reactor join 2 Mono
我需要使用 spring 反应器以反应方式连接到数据库。
这是我想要得到的场景->
1.Connect 到 db 并得到 response1
2.Then 连接到数据库并在提供 response1.parameter
的同时获得 response2
- 将这两个合并为一个响应并作为字符串发送回用户
由于所有对象都是唯一的,我打算使用 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());
但这对我不起作用
您应该获取 response1,然后将其结果平面映射到访问参数并将其传递到存储库,然后将结果映射到字符串
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();
}));
使用Mono.zip
示例:
Mono.zip(Mono.just("hello"), Mono.just("world")).map(tuple2 -> {
return tuple2.getT1() + tuple2.getT2();
});
Mono.zip 将给定的 monos 聚合成一个新的 Mono,当所有给定的 Monos 都生产了一个项目时,它将被实现。
我需要使用 spring 反应器以反应方式连接到数据库。 这是我想要得到的场景->
1.Connect 到 db 并得到 response1
2.Then 连接到数据库并在提供 response1.parameter
的同时获得 response2- 将这两个合并为一个响应并作为字符串发送回用户
由于所有对象都是唯一的,我打算使用 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());
但这对我不起作用
您应该获取 response1,然后将其结果平面映射到访问参数并将其传递到存储库,然后将结果映射到字符串
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();
}));
使用Mono.zip
示例:
Mono.zip(Mono.just("hello"), Mono.just("world")).map(tuple2 -> {
return tuple2.getT1() + tuple2.getT2();
});
Mono.zip 将给定的 monos 聚合成一个新的 Mono,当所有给定的 Monos 都生产了一个项目时,它将被实现。