본문 바로가기
728x90

[개발] Java & Kotlin4

4. Reactor 프로그래밍 방식의 Flux, Mono 생성 (동기식) 이번 장에서는 Mono와 Flux를 직접 프로그래밍으로 만들어보는 것을 소개하겠다. 대표적으로는 이전 게시물에서 예제 코드로 잠깐 다뤘었던 Flux.handle()이나 Flux.generate() 메서드 등이 있다. 팩토리 메서드가 아닌 프로그래밍 방식으로 Flux를 생성하면 무한 개의 데이터를 Push하는 Flux를 구현할 수도 있다. 여기서 다루는 모든 메서드는 API를 노출하여 Sink 라고 하는 이벤트를 트리거한다는 사실을 공유한다. 프로그래밍 방식으로 Flux를 생성하는 방법은 크게 동기식과 비동기식으로 나뉜다. 일단 동기식 프로그래밍 방식을 알아보자. 동기식 프로그래밍 방식에는 대표적으로 generate()와 handle()이 있다. 이 메서드들은 이전 게시물에서 예제로 간간히 나온 메서드들이.. 2022. 5. 14.
3. Reactor Backpressure 이번 시간에는 Reactor에서 제공하는 Backpressure에 대하여 알아보겠다. Subscriber가 Publisher를 구독하면 Publisher가 데이터를 push하여 Subscriber에게 데이터를 전달한다. 이 때 Publisher는 Subscriber에게 onNext 시그널을 보내 Subscriber에게 데이터를 전달한다는 것을 알린다. 또는 Publisher는 Subscriber에게 onComplete 시그널을 보내 완료가 되었음을 알리거나 onError 시그널을 보내 에러가 발생했음을 알린다. 그런데 Reactor에서는 반대로 Subscriber가 Publisher에게 어떠한 신호를 보내게 할 수 있는데 이를 Backpressure 이라고 한다. 기본 Backpressure: Unbou.. 2022. 5. 1.
2. Reactor Core (Mono, Flux, Subscribe) 이번장에는 Reactor를 직접 사용하여 Reactive programming을 어떻게 하는지 알아보자. 필자는 Kotlin을 주로 사용하기 때문에 언어는 Kotlin을 사용한다. Dependency 먼저 Reactor를 사용하기 위한 환경과 디펜던시를 맞추자. Reactor가 Java8 함수형 API(CompletableFuture, Stream, Duration)와 관련이 있기 때문에 Reactor를 사용하기 위해서는 Java 8 이상이어야 한다. 그리고 Reactor 라이브러리를 사용하기 위해서 gradle 설정을 추가하자. (KotlinDSL) plugins { id("io.spring.dependency-management") version "1.0.9.RELEASE" } dependencies.. 2022. 4. 29.
1. Reactor 소개 Spring Webflux 기반으로 웹 애플리케이션을 개발하기 위해 필요한 Reactor에 대한 지식을 넓히고자 공식 문서를 보면서 공부한 내용을 정리해보았습니다. Reactor Reactor는 JVM 환경에서 동작하는 non-blocking reactive 라이브러리이다. Reactor에서는 Mono와 Flux 라는 두 가지 비동기 시퀀스 API를 제공한다. 이는 나중에 자세히 다뤄보겠다. 그리고 Reactor는 Reactor Netty 프로젝트와 함께 non-blocking IPC(Inter-Process Commumication)을 지원한다. 여기서 Netty는 HTTP, TCP, UDP를 위한 backpressure(배압) 가 준비된 네트워크 엔진을 제공한다. Reactive Programming.. 2022. 4. 27.
728x90