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 | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기