Subject 지금까지 Observable, Single, Flowable 등의 데이터 스트림에 대해 알아보았다. 이번 포스팅에서 알아볼 녀석은 Subject 라는 녀석인데, 이는 관찰 가능한 데이터 스트림과 관찰자(구독자)의 성격을 모두 갖고 있는 특이한 녀석이다. 즉 Observable 과 Observer 를 모두 구현한 추상 타입으로, 하나의 소스로부터 다중의 구독자에게 멀티 캐스팅이 가능하다는 특징을 갖고 있다. Observer 를 구현한다는 특징때문에, onNext(), onError(), onComplete() 등의 이벤트를 수동으로 발생하여 구독자들에게 전달해줄 수 있다. 그럼, 다양한 Subject 의 종류 중 몇 가지에 대해 하나씩 알아보도록 하자. PublishSubject PublishSubject 는 가장 단순한 Subject 구현체중 하나이다. 구독자들에게 **이벤
Scheduler (스케줄러) RxJava 는 다양한 문제를 해결할 수 있는 범용적인 솔루션이다. 특히 멀티 쓰레딩과 같은 비동기 작업을 효율적으로 구현할 수 있는 환경을 제공해준다. 이는 스케줄러라는 녀석을 활용하게 된다. 스케줄러는 데이터 스트림이 어떤 쓰레드에서 데이터를 발행하는지, 구독자는 어떤 쓰레드에서 이벤트 발생을 통보받는지에 대해 지정해줄 수 있다. RxJava 에서는 Schedulers 클래스에서 제공하는 정적 패토리 메소드를 통해 스케줄러를 설정해줄 수 있다. Scheduler 종류 >### Single 스케줄러 Single 스케줄러는 단일 쓰레드를 생성하여 이를 계속 재사용하는 방식을 활용한다. RxJava 내부에서 쓰레드를 별도로 생성하여, 한 번 생성된 쓰레드를 활용하며 여러 작업을 처리하게 된다. >### IO 스케줄러 이 녀석은 네트워킹 작업이나 **DB 트랜잭션, 파일 시스
🔔 앞으로의 Reactive X 시리즈는 RxJava, RxKotlin 기준으로 작성됩니다 공식 문서를 참고하여 작성된 포스팅입니다. Backpressure 전략이 필요한 이유 지난 포스팅에서 Observable 데이터 스트림에서 발생할 수 있는 '배압 현상' 이라는 것에 대해 알아보았고, 이를 제어할 수 있는 데이터 스트림인 Flowable 에 대해서도 알아보았다. 그러나, Flowable 에서도 이 배압 현상을 제어하지 못하여 오류 (MissingBackpressureException)
🔔 앞으로의 Reactive X 시리즈는 RxJava, RxKotlin 기준으로 작성됩니다 공식 문서를 참고하여 작성된 포스팅입니다. 지금까지 다룬 내용 우리는 Observable 의 개념에 대해 살펴보았고, Observable 로 만들 수 있는 다양한 데이터 스트림의 형태를 익혀보았다. 또한, Observable 데이터 스트림에 체이닝 가능한 편리한 연산자들의 용법에 대해서도 알아보았다. 하지만, Observable 은 한 가지 문제점이 잠재되어 있다. 바로, 배압현상이라는 것이다. 이번 포스팅에선 이 배압현상이 무엇이고 왜 일어나는 지에 관하여 익혀보며, 이를 해결할 수 있는 새로운 데이터 스트림에 관하여 알아보자. 배압 (Backpressur
🔔 앞으로의 Reactive X 시리즈는 RxJava, RxKotlin 기준으로 작성됩니다 공식 문서를 참고하여 작성된 포스팅입니다. 이전 포스팅과 이어집니다. Observable 디버깅 연산자 데이터 스트림에서는 다양한 이벤트가 발생한다. 이러한 흐름이 어떻게 흘러가고 있는 지 손쉽게 파악할 수 있도록 다양한 연산자들을 제공해준다. doOnEach() 메소드  Consumer 등록하기 이전에 Observable 에서 에러가 발생하면 **`E
🔔 앞으로의 Reactive X 시리즈는 RxJava, RxKotlin 기준으로 작성됩니다 공식 문서를 참고하여 작성된 포스팅입니다. 이전 포스팅과 이어집니다. Observable 결합하기 여러 개의 Observable 데이터 스트림을 하나의 Observable 로 만들 수 있다. 여러 데이터를 이용하여 가공해서 사용하는 경우, 혹은 HTTP 통신의 응답들을 한 번에 묶어서 받고 싶은 경우 등에 사용하게 된다. 이번 포스팅에선 이러한 동작을 하는 Observable 결합 연산자들 중 몇 가지를 알아보고자 한다. 설명만 들어서는 헷갈릴 수 있는 파트다. 마블 다이어그램과
🔔 앞으로의 Reactive X 시리즈는 RxJava, RxKotlin 기준으로 작성됩니다 공식 문서를 참고하여 작성된 포스팅입니다. 이전 포스팅과 이어집니다. Observable 필터링하기 필터링 연산자는 Observable 이 뱉는 데이터들을 어떤 기준에 의해 거른 후 발행하도록 한다. 이번 포스팅에선 Observable 필터링 연산자 중 자주 사용되는 몇 가지를 알아보며, 개념을 익혀보도록 하자. debounce() 메소드 이 녀석은 특정 시간동안 더 이상 데이터가 발행되지 않을 때에 데이터을 발행하는 연산자이다.  메소드 우리는 버퍼 라
이전에 Observable 을 생성하고 구독하는 방법을 알아보았었다. 해당 내용의 연장선이니, 가물가물하다면 다시 이전 포스팅을 참고하길 바란다. subscribe() 의 비밀 내용을 상기시켜보자. 우리는 subscribe() 를 통해 Observable 데이터 스트림을 구독해볼 수 있었다. 그런데 이를 실험해본 사람이 있는지 모르겠는데. subscribe() 는 사실 Disposable 이라는 객체를 반환하기도 한다. 아래와 같이, Observable 을 subscribe() 로 구독하면, Disposable 객체를 리턴받아 할당할 수 있다. 그럼 이 녀석은 어디다 사용하는 것일까? Disposable 개념
🔔 앞으로의 Reactive X 시리즈는 RxJava, RxKotlin 기준으로 작성됩니다. 이전 포스팅 [Single, Maybe, Completable] 과 이어집니다. 이전 포스팅에서 Observable 을 생성하는 방법과 이외 특별한(?) 데이터 스트림들에 대해서도 알아보았다. 우리가 알아본 Observable 은 크게 두 가지로 나눌 수 있는데, 오늘은 이에 대해서 알아보고자 한다. Cold Observable & Hot Observable Observable 은 Cold Observable 과 Hot Observable 로 나눌 수 있는데, 차이는 요약하자면 이렇다. Cold Observable : 생성된 이후 누군가 구독을 요청했을 때 '처음부터' 데이터 발행 Hot Observable :
🔔 앞으로의 Reactive X 시리즈는 RxJava, RxKotlin 기준으로 작성됩니다. 이전 포스팅 [Observable 생성하기] 과 이어집니다. 이번 포스팅에서는 Observable 외에, Observable 에서 조금 변형되어 특수 목적을 가지는 데이터 스트림들을 소개한다. 그 중 Single, Maybe, Completable 등을 알아보자. Single 이름에 알 수 있듯, 단 하나의 데이터만 발행하는 녀석이다. create() 를 사용할 때 Emitter 를 사용하여 데이터를 발행한다. 기존에 onNext(), onComplete() 를 사용하여 다양한 이벤트들을 처리해주곤 했는데, Single 은 어차피 단 하나의 데이터 발행만 이루어지기 때문에 **
🔔 앞으로의 Reactive X 시리즈는 RxJava, RxKotlin 기준으로 작성됩니다. 이전 포스팅 [Observable 개념 날먹하기] 과 이어집니다. RxJava 에서는 다양한 형식으로 Observable 을 생성할 수 있다. 기존의 데이터를 Observable 형태로 만들 수도 있고, 네트워킹 작업 자체를 Observable 로 만들 수도 있다. 오늘은 Observable 을 생성하는 다양한 방법에 대해 알아보자. 사실 방법이 매우 많기 때문에, 그 중 자주 쓰이는 것들을 살펴본다. create() 메소드 Observable.create() 를 통해 Emitter 를 이용하여 직접 어떤 **데
Observable 녀석의 정체 Reactive X 세계에서는 어떤 데이터 흐름을 '관찰'하는 데에 포커스를 두고, 비동기적으로 다양한 동작을 수행할 수 있다. 그냥 메인 쓰레드는 자기 할 일 하고 있다가, 어떤 데이터가 나왔을 때 이를 감지하여 원하는 특정 동작을 수행할 수 있다. 이 때, 이 '관찰할 수 있는' 데이터 스트림을 Rx 에서는 Observable 이라고 부른다. 보통 Observable 은 어떠한 순차적인 데이터를 갖게 된다. 이 데이터 스트림을 관찰하게 되는 '옵저버'들은 'Observable' 이 발행하는 '데이터'에 즉각 반응을 할 수 있다. 바로 '옵저버 패턴'을 이용해서 말이다. 옵저버 패턴 되짚어보기 이전에 옵저버 패턴에 대하여 [포스팅](https://velog.io/@haero_kim/%EC%98%B5%EC%A0%80%EB%B2%84-%E
👋🏻 이 글은 Reactive X, 반응형 프로그래밍을 처음 접하는 사람들을 위한 포스팅입니다. 🤔 채용공고에 보이는 의문의 자격요건 요즘 앱 개발자 포지션의 채용공고에 보면 자격요건, 우대사항 등에 다음과 같은 말들이 자주 보인다. RxJava3 를 능숙하게 다룰줄 아는 사람 Reactive X 를 활용한 함수형 프로그래밍에 익숙한 사람 RxKotlin, RxAndroid 를 사용해본 적 있는 사람 RxSwift 를 사용하여 비동기 처리를 구현해본 사람 > 예상반응 1 : '뭐지? 업그레이드 된 자바인가?' 예상반응 2 : **'흠.. 라이브러리 이름인가? 아무튼 좋