如何组成两个Flux<>对象合而为一

时间:2017-05-31 20:54:39

标签: java project-reactor

我开始接受反应式编程。在参加了一些关于reactor和spring 5.0的讨论后,我想自己尝试这个编程模型。

我有一个应用程序,它使用WebClient从不同的API构建两个Flux对象。我想将这2个对象组合成一个并将其返回给用户。

代码示例如下所示:

public class User {
  private String username;
  //getters and setters
}

public class Address {
  private String street;
  //getters and setters;
}

public class CompleteUser {
  private String username;
  private String address;
  //getters and setters
}

现在在我的处理程序方法中:

final Flux<User> = WebClient.create()...;
final Flux<Address> = WebClient.create()...;
final Flux<CompleteUser> = //somehow compose this two types into one

我应该用reactor API来实现这个目标吗?我找到了一些方法来组合像combineLatest这样的对象,但是在这种情况下,我想用第一个Flux的第一个项目组成第一个Flux的第一个项目。

1 个答案:

答案 0 :(得分:2)

Flux.zip静态方法正是您所寻找的。对于2个源的组合,您可以提供BiFunction来生成结果。

Flux<CompleteUser> complete = Flux.zip(fluxUser, fluxAddress, (u, a) -> new CompleteUser(u, a));
//if the ctor perfectly matches, you can also use CompleteUser::new
相关问题