Reactive Programmingaaa/Reactor 기초 문제풀이~

04 Adapt

peter.j 2021. 3. 30. 00:27

이 글은 tech.io/playgrounds/929/reactive-programming-with-reactor-3/Adapt의 문제풀이이다.

 

 

RxJava3나 Reactor3 모두 Reactive Streams의 구현체이기 때문에, 외부 라이브러리 없이 서로와 호환된다.

 

예를들어, Flux(Reactor3의 Publisher 구현체)를 Flowable(RxJava3의 Publisher 구현체)로 (혹은 반대로) 변경할 수 있다.

Flowable<User> fromFluxToFlowable(Flux<User> flux) {
	return Flowable.fromPublisher(flux);
}

Flux<User> fromFlowableToFlux(Flowable<User> flowable) {
	return Flux.from(flowable);
}

 

 

Observable은 Publisher의 구현체가 아니기 때문에 조금 더 트리키한 방법이 필요하다.

Flux에서 Observable로 변환하는 것은 위 방법과 다르지 않지만,

Observable은 backpressure를 지원하지 않기 때문에 Observable과 backpressure를 조합해 먼저 Flowable을 만든 후 Flux로 변환해야한다.

Observable<User> fromFluxToObservable(Flux<User> flux) {
	return Observable.fromPublisher(flux);
}

Flux<User> fromObservableToFlux(Observable<User> observable) {
	return Flux.from(observable.toFlowable(BackpressureStrategy.LATEST);
}

 

 

다음은, Reactor3의 Mono를 RxJava의 Single (혹은 반대로) 변환해보자.

Single<User> fromMonoToSingle(Mono<User> mono) {
    return Single.fromPublisher(mono);
}

Mono<User> fromSingleToMono(Single<User> single) {
    return Mono.from(single.toFlowable());
}

 

 

마지막으로 Mono와 Java8의 CompletableFutrure 역시 서로로 변환될 수 있다.

CompletableFuture<User> fromMonoToCompletableFuture(Mono<User> mono) {
    return mono.toFuture();
}

Mono<User> fromCompletableFutureToMono(CompletableFuture<User> future) {
    return Mono.fromFuture(future);
}

 

 

 

 

참고

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

 

Adapt - Reactive Programming with Reactor 3

Explore this playground and try new concepts right into your browser

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-8.Adapt

 

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-8.Adapt

페이지 … 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
05 Others operations  (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