
Subscriber가 구독을 할 때 마다 Sequence의 모든 Data를 받을 수 있다
Flux<String> coldFlux = Flux.fromIterable(Arrays.asList("RED", "YELLOW", "PINK"))
.map(String::toLowerCase);
coldFlux.subscribe(color -> log.info("# Subscriber1: {}", color));
log.info("-------------------------------------------------");
coldFlux.subscribe(color -> log.info("# Subscriber2: {}", color));

Subscriber는 구독을 한 시점부터 Emit되는 Data만을 받을 수 있다
Flux<String> concertFlux = Flux.fromStream(Stream.of("Singer A", "Singer B", "Singer C", "Singer D", "Singer E"))
.delayElements(Duration.ofSeconds(1)).share();// share(): 원본 Flux를 여러 Subscriber가 공유한다
concertFlux.subscribe(singer -> log.info("# Listener1: {}", singer));
Thread.sleep(2500);
concertFlux.subscribe(singer -> log.info("# Listener2: {}", singer));
Thread.sleep(3000);
// Console
# Listener1: Singer A
# Listener1: Singer B
# Listener1: Singer C
# Listener2: Singer C
# Listener1: Singer D
# Listener2: Singer D
# Listener1: Singer E
# Listener2: Singer E
share() 메서드는 Cold Sequence → Hot Sequence 로 변환시켜주는 역할을 한다