나는 프로젝트 원자로와 내가 힘들어하는 곳 중 하나를 사용하기 시작했다. 어떻게 Mono에서 오는 것들을 Flux와 결합 시키는가?Flux의 결과와 Mono의 결과를 합치는 것
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.
이제 내가 무엇을 달성하고자하는 것은 :
가 어떻게 group.addUsers (userfromFlux) 같은과, 그 그룹에 해당 사용자를 UserFlux에서 응답을 결합하여 연결할 수 있습니다 여기 내 사용 사례입니다.
누군가가 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)
?
필자의 경우 그룹 모델 내부의 기본 데이터 구조가 HashSet (그룹의 일부인 사용자 보유)이고 스레드로부터 안전하지 않기 때문에 Flux.zip (groupMono, userMono, BiFunction)을 사용하여 종료되었습니다. 그룹 내 사용자 흐름에서 유입되는 사용자를 반응 방식으로 추가합니다. 따라서 BiFunction을 사용하여 별도의 방법으로 그룹의 사용자를 채 웁니다. 도움을 주셔서 감사합니다. 정말 도움을 주셔서 감사합니다! – Coder