使用 Mono 值并用它来调用另一个 Mono

Van*_*na 2 reactive-programming project-reactor spring-webflux

我的代码是这样构造的 -

Mono<Address> m1 = method1() // this call returns address
Mono<Boolean> m2 = method2() // this call uses ReactiveMongoTemplate and updates document in Mongo
Run Code Online (Sandbox Code Playgroud)

我正在努力实现这一目标:

当 method1() 返回地址时,我需要使用它并调用 method2() 来更新 MongoDB 文档中的地址。也没有抛出异常。但我在 method2() 中没有看到任何日志

代码 :

Mono<Object> m1 = method1().map(address -> method2(address));
Run Code Online (Sandbox Code Playgroud)

尽管调用了 method2(),但 MongoDB 中的文档更新并未发生。

Bri*_*zel 5

您的代码片段正在返回Mono<Mono<Boolean>>,因此没有任何内容订阅内部Mono

您可能应该像这样使用Mono.flatMap运算符:

Mono<Boolean> m1 = method1().flatMap(address -> method2(address));
Run Code Online (Sandbox Code Playgroud)

该运营商将扁平化运营链。