스프링으로 시작하는 리액티브 프로그래밍 스터디
-
14장 Operator 8 - multicastSpring/Webflux 2023. 7. 30. 14:22
14.9 다수의 Subscriber 에게 Flux 를 멀티캐스팅(Muticasting)하기 위한 Operator 1) publish https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#publish-- 마블 다이어 그램에서 보다시피 publish() 는 구독을 하더라도 구독 시점에 즉시 데이터를 emit 하지 않고, connect() 를 호출하는 시점에 비로소 데이터를 emit 합니다 그리고 Hot Sequence 로 변환되기 때문에 구독 시점 이후에 emit 된 데이터만 전달 받을 수 있습니다. 코드 14-60 publish 예제 1 public static void main(String[] args) thro..
-
14장 Operator 7 - splitSpring/Webflux 2023. 7. 29. 17:26
github : https://github.com/bjpublic/Spring-Reactive/tree/main/part2/src/main/java/chapter14/operator_7_split 14.8 Flux Sequence 분할을 위한 Operator 1) windows https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#window-java.time.Duration- window(int maxSize) 는 Upstream 에서 emit 되는 첫 번째 데이터부터 maxSize 숫자만큼의 데이터를 포함하는 새로운 Flux 로 분할합니다. Reactor 에서는 이렇게 분할된 Flux 를 윈도우(window) ..
-
14장 Operator 6 - timeSpring/Webflux 2023. 7. 26. 23:21
github : https://github.com/bjpublic/Spring-Reactive/tree/main/part2/src/main/java/chapter14/operator_6_time 14.7 Sequence 의 동작 시간 측정을 위한 Operator delayElements(), interval(), timeout() 등 Reactor Sequence 의 동작 시간을 제어하는 Operator 를 사용해 보았는데, 이외에도 Reactor Sequence 의 동작 시간 자체를 측정하는 특별한 Operator 가 존재합니다 1) elapsed https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#elapse..
-
14장 Operator 5 - ErrorSpring/Webflux 2023. 7. 22. 19:51
github : https://github.com/bjpublic/Spring-Reactive/tree/main/part2/src/main/java/chapter14/operator_5_error 질문 flatMap vs map ? 14.6 에러 처리를 위한 Operator 1) error https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#error-java.util.function.Supplier- error() Operator 는 파라미터로 지정된 에러로 종료하는 Flux 를 생성합니다 error() 는 마치 throw 를 사용해서 예외를 의도적으로 던지는 것 같이 동작하는데 checked exception..
-
14장 Operator 4 - peekSpring/Webflux 2023. 7. 22. 19:33
github : https://github.com/bjpublic/Spring-Reactive/tree/main/part2/src/main/java/chapter14/operator_4_peek 14.5 Sequence 의 내부 동작 확인을 위한 Operator Upstream Publisher 에서 emit 되는 데이터의 변경 없이 부수 효과 (side effect) 만을 수행하기 위한 Operator 들로, doOnXXXX() 패턴으로 많이 쓰입니다. Consumer 또는 Runnable 타입의 함수형 인터페이스를 파라미터로 가지기 때문에 별도의 리턴 값이 없습니다 Publisher 내부 동작을 엿볼 수 있으며, 로그를 출력하는 등의 디버깅 용도로 많이 사용됩니다 또한, 데이터 emit 과정에서 er..
-
14장 Operator 3 - transformationSpring/Webflux 2023. 7. 16. 10:57
github : https://github.com/bjpublic/Spring-Reactive/tree/main/part2/src/main/java/chapter14/operator_3_transformation 14.4 Sequence 변환 Operator 1) map https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#map-java.util.function.Function- map() Operator 는 Upstream 에서 emit 된 데이터를 mapper Function 을 사용하여 변환한 후, Downstream 으로 emit 합니다. map() Operator 의 마블 다이어그램을 보면 어떤 기능을 ..
-
14장 Operator 2 - filterSpring/Webflux 2023. 7. 9. 16:51
github: https://github.com/bjpublic/Spring-Reactive/tree/main/part2/src/main/java/chapter14/operator_2_filter 14.3 Sequence 필터링 Operator 1) filter https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#filter-java.util.function.Predicate- filter() Operator 는 Upstream 에서 emit 된 데이터 중에서 조건에 일치하는 데이터만 Downstream 으로 emit 합니다. 즉, filter Operator 의 파라미터로 입력받은 Predicate 의 리턴값이..
-
14장 Operator 1 - Sequence 생성Spring/Webflux 2023. 7. 8. 14:04
github code : https://github.com/bjpublic/Spring-Reactive/tree/main/part2/src/main/java/chapter14/operator_1_create 14.1 Operator 란 리액티브 프로그래밍은 operator 로 시작해서 operator 로 끝난다라고 해도 과언이 아닐정도로 가장 중요한 구성요소 입니다 Chapter 14 의 내용 구성방식 operator 의 1. 마블 다이어그램 2. 기본 예제 3. 실무 활용 예제 14.2 Sequence 생성을 위한 Operator 1) justOrEmpty https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html#j..