在反应器中对两个不同的 Mono 进行组合订阅

Do a combine subscribe on two different Mono in reactor

我有两个单声道

Mono<Profile> profile;
Mono<Account> account;

Profile.java

public class Profile{
    int id;
    String name;
}

Account.java

public class Account{
    int id;
    String password;
}

我有一项服务 class 可以将这两个单声道保存到 couchbase 中。 服务 class returns Mono 的保存功能。 有没有一种方法可以让一个订阅者自己将这两个 Mono 一次保存到数据库中。

像这样...

createService.save(profile)..useOfSomeFunction..createService.save(account).subscribe();

通过这种方式,我可以一次只用一个订阅者保存两个文档。

有人可以帮忙吗?

是的。如果你想:

  • 同时保存两者但不关心 return 值使用 Mono.when(save(account), save(profile))
  • 要一个接一个地保存,请使用 save(account).then(save(profile))(您只会看到第二次调用的结果)
  • 要同时保存两者并对结果进行处理,请使用 Mono.zip(save(account), save(profile), (acc, prof) -> doSomething(...))