Reactive Programmingaaa/Reactor 기초 문제풀이~

05 Others operations

peter.j 2021. 3. 30. 01:02

이 글은 tech.io/playgrounds/929/reactive-programming-with-reactor-3/OthersOperations 에 대한 문제풀이이다.

 

 

이번 장은 Reactor 3의 다양하고 유용한 Operator들에 대해 살펴본다.

먼저, zip Operator는 복수개의, 각각의 레이턴시를 두고도착하는 Publisher들을 합쳐서 연산할 수 있는 Operator이다.

Flux<User> userFluxFromStringFlux(Flux<String> usernameFlux, Flux<String> firstnameFlux, Flux<String> lastnameFlux) {
    return Flux.zip(
            (args) -> {
                return new User((String) args[0], (String) args[1], (String) args[2]);
            },
            usernameFlux, firstnameFlux, lastnameFlux
    );
}

 

 

두 모노 중 먼저 생상되는 Mono만을 생산하도록 할 수도 있다.

Mono<User> useFastestMono(Mono<User> mono1, Mono<User> mono2) {
	return Mono.first(mono1, mono2);
}

 

 

Flux는 복수의 값을 생산하는 Publisher인데, 두 Flux중 첫값을 먼저 생산하는 Flux만을 생산하는 것 역시 가능하다.

Flux<User> useFastestFlux(Flux<User> flux1, Flux<User> flux2) {
    return Flux.firstEmitting(flux1, flux2);
}

 

 

Flux의 then() 메서드는 항상 Mono<Void>를 반환한다.

Mono<Void> fluxCompletion(Flux<User> flux) {
    return flux.then();
}

 

 

Reactive Streams는 null을 허용하지 않는데, null처리를 할 수 있는 방법들도 존재한다.

Mono<User> nullAwareUserToMono(User user) {
    return Mono.justOrEmpty(user);
}

Mono<User> emptyToSkyler(Mono<User> mono) {
    return mono.defaultIfEmpty(User.SKYLER);
}

 

 

Flux가 생산하는 모든 요소들을 하나의 List로 만들어, 해당리스트를 생산하는 Mono를 만들 수 있다.

Mono<List<User>> fluxCollection(Flux<User> flux) {
    return flux.collectList();
}

 

 

 

 

참고

tech.io/playgrounds/929/reactive-programming-with-reactor-3/OthersOperations

 

The free knowledge-sharing platform for technology

Create interactive content on any technology and share it with the community

tech.io

wiki.sys4u.co.kr/pages/viewpage.action?pageId=7766994#id-%EC%97%B0%EC%8A%B5%EB%AC%B8%EC%A0%9C%EB%A1%9C%EB%B0%B0%EC%9B%8C%EB%B3%B4%EB%8A%94Reactor-9.OtherOperations

 

http://wiki.sys4u.co.kr/pages/viewpage.action?pageId=7766994#id-%EC%97%B0%EC%8A%B5%EB%AC%B8%EC%A0%9C%EB%A1%9C%EB%B0%B0%EC%9B%8C%EB%B3%B4%EB%8A%94Reactor-9.OtherOperations

페이지 … PLATEER OPEN WIKI Architectures 리액티브 프로그래밍(Reactive Programming) 배너의 맨 끝으로 배너의 맨 처음으로 연습문제로 배워보는 Reactor 메타 데이터의 끝으로 건너뛰기 작성자 : 알 수 없는

wiki.sys4u.co.kr

 

사업자 정보 표시
1 | g | asdf | 사업자 등록번호 : 123-12-12345 | TEL : 010-111-1111 | Mail : asdf@gmail.com | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기

'Reactive Programmingaaa > Reactor 기초 문제풀이~' 카테고리의 다른 글

07 Blocking to Reactive  (0) 2021.03.30
06 Reactive To Blocking  (1) 2021.03.30
04 Adapt  (0) 2021.03.30
03 Request  (0) 2021.03.16
02 Merge  (0) 2021.03.16
01 Introduction to Reactive Programming  (5) 2021.03.02