BackEnd/RxJava
-
에러 처리 연산자BackEnd/RxJava 2023. 7. 8. 08:00
RxJava에서는 아래와 같이 try ~ catch 문을 사용할 수 없습니다. 아래 코드를 실행하면 catch 에서 Exception을 잡지 못하고 예외가 발생하는 것을 확인할 수 있습니다. package com.itvillage.chapter05.chapter0506; import com.itvillage.utils.LogType; import com.itvillage.utils.Logger; import com.itvillage.utils.TimeUtil; import io.reactivex.Observable; import java.util.concurrent.TimeUnit; public class CanNotUseTryCatchExample { public static void main(Stri..
-
결합 연산자BackEnd/RxJava 2023. 7. 8. 07:00
merge 다수의 Observable에서 통지된 데이터를 받아서 다시 하나의 Observable로 통지합니다. 통지 시점이 빠른 Observable의 데이터부터 순차적으로 통지되고, 통지 시점이 같을 경우에는 merge() 함수의 파라미터로 먼저 지정된 Observable의 데이터부터 통지됩니다. package com.itvillage.chapter05.chapter0505; import com.itvillage.utils.LogType; import com.itvillage.utils.Logger; import com.itvillage.utils.TimeUtil; import io.reactivex.Observable; import java.util.concurrent.TimeUnit; /** * 두개..
-
변환 연산자BackEnd/RxJava 2023. 7. 7. 07:00
map 원본 Observable에서 통지하는 데이터를 원하는 값으로 변환 후 통지합니다. 변환 전, 후 데이터 타입은 달라도 상관 없습니다. null을 반환하면 NullPointException이 발생하므로 null이 아닌 데이터 하나를 반드시 반환해야 합니다. package com.itvillage.chapter05.chapter0503; import com.itvillage.utils.LogType; import com.itvillage.utils.Logger; import io.reactivex.Observable; import java.util.Arrays; import java.util.List; /** * Observable이 통지한 항목에 함수를 적용하여 통지된 값을 변환시킨다. */ pub..
-
필터링 연산자BackEnd/RxJava 2023. 7. 6. 07:00
filter 전달 받은 데이터가 조건에 맞는지 확인한 후 결과가 true인 데이터만 통지합니다. 파라미터로 받는 Predicate 함수형 인터페이스에서 조건을 확인합니다. 연산자 함수는 메서드 체인으로 여러 개를 사용할 수 있습니다. package com.itvillage.chapter05.chapter0502; import com.itvillage.common.CarMaker; import com.itvillage.common.SampleData; import io.reactivex.Observable; public class ObservableFilterExample02 { public static void main(String[] args) { Observable.fromIterable(Sample..
-
Flowable/Observable 생성 연산자BackEnd/RxJava 2023. 7. 2. 09:00
Flowable/Observable 생성 연산자 create 연산자 (이전 포스팅 참고) interval 연산자 range 연산자 timer 연산자 defer 연산자 fromIterable 연산자 fromFuture 연산자 interval 지정한 시간 간격마다 0부터 시작하는 숫자(Long)를 완료 없이 계속 통지합니다. initialDelay 파라미터를 이용해서 최초 통지에 대한 대기 시간을 지정할 수 있습니다. 호출한 스레드와는 별도의 스레드에서 실행됩니다. polling 용도의 작업을 수행할 때 활용할 수 있습니다. package com.itvillage.chapter05.chapter0501; import com.itvillage.utils.LogType; import com.itvillage.u..
-
Single, Maybe, CompletableBackEnd/RxJava 2023. 7. 2. 05:30
Single 데이터를 1건만 통지하거나 에러를 통지합니다. 데이터 통지 자체가 완료를 의미하기 때문에 완료 통지는 하지 않습니다. 데이터를 1건만 통지하므로 데이터 개수를 요청할 필요가 없습니다. onNext(), onComplete()가 없으며, 이 둘을 합한 onSuccess()를 제공합니다. Single의 대표적인 소비자는 SingleObserver입니다. 클라이언트의 요청에 대응하는 서버의 응답이 Single을 사용하기 좋은 대표적인 예입니다. package com.itvillage.chapter03.chapter0303; import com.itvillage.utils.DateUtil; import com.itvillage.utils.LogType; import com.itvillage.util..
-
Flowable과 ObservableBackEnd/RxJava 2023. 7. 2. 05:00
Flowable vs Observable Flowable Observable Reactive Streams 인터페이스 구현 Reactive Streams 인터페이스를 구현하지 않음 Subscriber에서 데이터 처리 Observer에서 데이터 처리 배압 기능 존재 배압 기능 미존재 Subscription으로 전달 받는 데이터 개수 제어 가능 데이터 개수 제어 불가능 Subscription으로 구독 해지 Disposable로 구독 해지 배압(Back Pressure) Flowable에서 데이터를 통지하는 속도가 Subscriber에서 통지된 데이터를 전달받아 처리하는 속도 보다 빠를 때 밸런스를 맞추기 위해 데이터 통지량을 제어하는 기능을 말합니다. 배압 전략(Backpressure Strategy) MI..
-
Reactive StreamsBackEnd/RxJava 2023. 7. 1. 09:00
Reactive Streams Github 리액티브 프로그래밍 라이브러리의 표준 사양입니다. RxJava는 Reactive Streams의 인터페이스들을 구현한 구현체입니다. Reactive Streams는 Publisher, Subscriber, Subscription, Processor 4개의 인터페이스를 제공합니다. Publisher 데이터를 생성하고 통지합니다. public interface Publisher { public void subscribe(Subscriber