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

fak*_*ery 1 java project-reactor

我有两个单声道

Mono<Profile> profile;
Mono<Account> account;
Run Code Online (Sandbox Code Playgroud)

Profile.java

public class Profile{
    int id;
    String name;
}
Run Code Online (Sandbox Code Playgroud)

Account.java

public class Account{
    int id;
    String password;
}
Run Code Online (Sandbox Code Playgroud)

我有一个服务类,可以将这两个单声道保存到沙发上。服务类的保存功能返回Mono。有没有一种方法可以让一个订户本身一次将这两个Mono保存到数据库中。

像这样的东西

createService.save(profile)..useOfSomeFunction..createService.save(account).subscribe();
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我可以一次只与一个订户一起保存两个文档。

有人可以帮忙吗?

Sim*_*slé 5

是。如果你想:

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