我开始使用 Project reactor,而我很少挣扎的一个地方是如何将来自 Mono 的东西与 Flux 结合起来。这是我的用例:
public interface GroupRepository {
Mono<GroupModel> getGroup(Long groupId);
}
public interface UserRepository {
Flux<User> getUsers(Set<Long> userIds);
}
Mono<GroupModel> groupMono = getGroup(groupId);
Flux<User> userFlux = getUsers(Set<Long> users);
//run above instrtuction in parallel and associate user to group.
现在我想要实现的是:
如何结合来自 UserFlux 的响应并将这些用户与该组相关联,例如 group.addUsers(userfromFlux)。
有人可以帮助如何组合来自 userFlux 和 groupMono 的结果。我想我使用像 Zip 这样的东西,但它会从源代码进行一对一的映射。就我而言,我需要进行 1 到 N 映射。在这里,我有一个组,但需要将多个用户添加到该组中。返回Mono<List<Users>
然后将 zip 运算符与单声道一起使用并提供此处提到的组合器是一个好主意
public static <T1, T2, O> Flux<O> zip(Publisher<? extends T1> source1,
Publisher<? extends T2> source2,
final BiFunction<? super T1, ? super T2, ? extends O> combinator)
吗?