[Section 4] 리액티브 프로그래밍

현이·2023년 5월 22일
0

백엔드 부트캠프 TIL

목록 보기
34/37
post-thumbnail

시내 Hanley 구경 나갔다가 장보러가는 길에 노을이 너무 예뻐서 찍은 사진
리액티브 시작했다... 용어랑 개념만 가볍게만 배웠는데도 벌써 생소하다...

리액티브 프로그래밍

  • 리액티스 시스템에서 사용되는 프로그래밍 모델
  • Message Driven↔️Non-Blocking 통신 : 유기적인 관계
  • 리액티브 프로그래밍 : Non-Blocking 통신을 위한 프로그래밍 모델

리액티브 프로그래밍 특징

  • declarative
  • data streams & propagation of change
  • automatic propagation of the changed data flow
  • 선언형 프로그래밍 방식 : 순차적으로 실행❌, 실행할 코드 선언만
  • 리액티브 스트림즈 (Reactive Streams) : 리액티브 프로그래밍을 위한 표준 사양

리액티브 스트림즈 컴포넌트

  • Publisher 인터페이스
    - 데이터 소스로부터 데이터를 emit
    - subscribe() 추상 메서드가 Publisher로부터 내보내진 데이터 소비
    - subscribe()로 데이터 수신 여부 결정 -> 호출 안하면 Publisher가 데이터 내보내는 프로세스 시작❌

  • Subscriber 인터페이스
    - Publisher로부터 내보내진 데이터 소비
    - onSubscribe(Subscription s) : 구독 시작시 호출, Publisher에 요청할 데이터 개수 지정 & 구독 해지
    - onNext(T t) : Publisher가 데이터 emit할 때 호출, emit된 데이터 전달받아서 소비
    - onError(Throwable t) : emit된 데이터가 Subscriber로 전달되는 과정에서 에러 발생할 때 호출
    - onComplete() : emit과정 종료될 때 호출

  • Subscription 인터페이스
    - Subscriber의 구독 자체
    - request(long n) : emit하는 데이터의 개수 요청
    - cancel() : 구독 해지

  • Processor 인터페이스
    - Publisher와 Subscribe의 역할 동시에




리액티브 프로그래밍 용어

  • Publisher : 데이터를 내보내는 주체
  • Emit : Publisher가 데이터를 내보내는 것
  • Subscriber : Publisher가 emit한 데이터를 전달받아서 소비하는 주체
  • Subscribe : 구독
  • Signal : publisher가 발생시키는 이벤트
  • Operator : 어떤 동작을 수행하는 메서드
  • Sequence : Operator 체인으로 표현되는 데이터의 흐름
  • Upstream / Downstream : 특정 operator 위에있으면 upstream, 아래에 있으면 downstream

0개의 댓글