전체 글
-
변환 연산자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
-
RxJava 프로젝트 환경 구축BackEnd/RxJava 2023. 7. 1. 07:30
RxJava 프로젝트 환경 구축 JDK(1.8 이상)과 IDE(Eclipse, IntelliJ 등) 설치 후 진행 부탁 드립니다. 의존성 추가(Dependency) Java 프로젝트 생성 이후 build.gradle에 다음과 같이 의존성을 추가합니다. rxjava Github rxjava 3.1.6 API Doc plugins { id 'java' } group 'org.example' version '1.0-SNAPSHOT' repositories { mavenCentral() } dependencies { implementation "io.reactivex.rxjava3:rxjava:3.1.6" testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8..
-
리액티브(Reactive) 프로그래밍 개요BackEnd/RxJava 2023. 7. 1. 07:00
리액티브 프로그래밍(Reactive Programming) In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. - wikipedia - declarative programming: 실행할 동작을 구체적으로 명시하는 명령형 프로그래밍과 달리 선언형 프로그래밍은 단순히 목표를 선언합니다. data streams and the propagation of change: 데이터가 변경될 때마다 이벤트를 발생시켜서 데이터를 계속적으로 전달합니다. 명령형 프로그래밍 vs 선언형 프로그래밍 package com.itvillage.chap..