Page 24 -
P. 24

또한 RxJava는 규칙에 따라 구현하지 않아도 문제가 발생하지 않게 내부적으로 구현한 부분도 있
               습니다. 하지만 이는 문제가 발생하지 않는다고 보장하지 않습니다. 예를 들어, 현재 상태에서 문
               제가 발생하지 않는다고 해도 향후에 성능 등을 이유로 규칙을 따르지 않는 처리에 대한 구현이

               빠질 수도 있습니다. 그러므로 개발자는 현재 상태의 구현을 믿지 말고 Reactive Streams 규칙에
               따라 구현해야 합니다.






               1.3        RxJava의 기본 구조                                      RxJava







               RxJava가 어떻게 구성됐는지 살펴보겠습니다.




               1.3.1 기본 구조


               RxJava는 데이터를 만들고 통지하는 생산자와 통지된 데이터를 받아 처리하는 소비자로 구성됩
               니다. 이 생산자를 소비자가 구독해 생산자가 통지한 데이터를 소비자가 받게 됩니다. RxJava에

               서 이 생산자와 소비자의 관계는 크게 두 가지로 나뉩니다. 하나는 Reactive Streams를 지원하
               는 Flowable과 Subscriber, 다른 하나는 Reactive Streams를 지원하지 않고 배압 기능이 없는
               Observable과 Observer입니다

                  표 1-4 RxJava의 생산자와 소비자 구성

                구분                           생산자                   소비자
                Reactive Streams 지원          Flowable              Subscriber
                Reactive Streams 미지원         Observable            Observer


               Flowable은 Reactive Streams의 생산자인 Publisher를 구현한 클래스고, Subscriber는

               Reactive Streams의 클래스입니다. 그래서 기본적인 메커니즘은 Reactive Streams와 같습니
               다. 생산자인 Flowable로 구독 시작(onSubscribe), 데이터 통지(onNext), 에러 통지(onError), 완
               료 통지(onComplete)를 하고 각 통지를 받은 시점에 소비자인 Subscriber로 처리합니다. 그리고

               Subscription으로 데이터 개수 요청과 구독 해지를 합니다.

         032





     RxJava 리액티브 프로그래밍(본문)최종.indd   32                                                      2019-03-26   오전 11:26:31
   19   20   21   22   23   24   25   26   27   28   29