본문 바로가기
▶ Back-End/개념 요약

Sinks.many() 란?

by 오늘도 코딩 2022. 11. 29.
728x90
반응형

EmitterProcessor가 @Deprecated 돼서 Sinks.many()로 대체 사용

*EmitterProcessor 내부에서 Sinks를 사용하고 있음
*Processor : 처리 단계를 나타내며 발행자 인터페이스와 구독자 인터페이스를 모두 상속

*자세한 설명 생략

 

 

▷ Sinks.many()

 

- 데이터를 구독 받고, 구독한 데이터를 다시 발행할 때 사용

- 여러 subscriber가 사용할 수 있는 구독과 발행이 동시에 일어나는 프로세서
- 내부 queue를 가지고 있어 subscriber가 없더라도 해당 데이터를 큐에 쌓음

 

종류 설명
unicast() 하나의 Subscriber만 허용(즉, 하나의 Client 만 연결)
multicast() 여러 Subscriber를 허용
multicast().onBackpressureBuffer() Subscriber는 구독 이전에 발행된 이벤트들을 모두 받음
multicast().directAllOrNothing() Subscriber는 구독 이후에 발행된 이벤트들을 받음
replay() 여러 Subscriber를 허용, 구독 이전에 발행된 이벤트들을 모두 받음

 

종류 설명
tryEmitNext() 대기열 메시지를 방출
asFlux() Sinks에서 Flux로 가져옴(Sinks.empty(), Sinks.one())
asMono() Sinks에서 Mono로 가져옴(Sinks.many())

 

 

▷ 참고

 

Reactor 3 Reference Guide

10:45:20.200 [main] INFO reactor.Flux.Range.1 - | onSubscribe([Synchronous Fuseable] FluxRange.RangeSubscription) (1) 10:45:20.205 [main] INFO reactor.Flux.Range.1 - | request(3) (2) 10:45:20.205 [main] INFO reactor.Flux.Range.1 - | onNext(1) (3) 10:45:20.

projectreactor.io

 

 

▷ 관련 글

 

Spring WebFlux 란?

* 자세한 설명 생략 ▷ WebFlux란? - Spring WebFlux는 Spring 5에서 새롭게 추가된 모듈 - Reactive-stack Web Framework이며 non-blocking의 reactive stream을 지원 - Flux와 Mono라는 두 종류의 Publisher와 Cold, Hot 방식 존재 -

coding-today.tistory.com

 

SpringBoot에서 MQTT Client + WebFlux 구축

WebFlux를 적용한 MQTT Client를 구축하고 Topic 메시지 도착 시 Callback으로 Bean을 통해 서비스 구분 *Mqtt Broker(mosqitto) 아래 관련 글 참고 *자세한 설명 생략 ▷ Project 전체 구조 *파일 이름으로 검색 가능

coding-today.tistory.com

 

 

728x90
728x90

'▶ Back-End > 개념 요약' 카테고리의 다른 글

서블릿(Servlet) 이란?  (0) 2023.02.03
Spring 이란?  (0) 2023.02.01
Spring WebFlux Non-Blocking 방법  (0) 2022.11.29
스레드 풀(Thread Pool) 이란?  (0) 2022.11.22
R2DBC 란?  (0) 2022.11.11

댓글