WebFlux(7)
-
Spring Webflux 및 MVC Security환경 비교
개인적으로 느끼기에는 구조 자체는 MVC 환경 Security와 비슷하다. 허나 반환 형식이랑 체인 설정법만 조금씩 다른 느낌이다. SecurityConfig MVC 환경 @Configuration @EnableWebSecurity @RequiredArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) public class SecurityConfig { JwtAuthenticationFilter jwtAuthenticationFilter; @Bean public SecurityFilterChain configure(HttpSecurity http) throws Exception { return http.authorize..
2023.07.15 -
Spring webflux를 활용한 SSE(Server Sent Event) 구현
SSE(Server Sent Event) 란? 서버의 데이터를 실시간으로 스트리밍 하는 기술 HTTP프로토콜 기반 text/event-stream 미디어 타입 사용 클라이언트와 서버가 최초 한 번 HTTP 연결 후 서버가 클라에게 지속적으로 데이터 전송 단방향 통신, 실시간 업데이트, 자동 재연결 기능 제공 spring에서 SSE 구현 방법 SseEmmiter Spring MVC에서 SSE를 구현하는 스택. 간단하게 사용 가능하고 스레드 기반으로 동작하나, 높은 리소스 사용하고 확장성에 제한이 있음 https://github.com/phjppo0918/SseEmitter-sample GitHub - phjppo0918/SseEmitter-sample Contribute to phjppo0918/SseEm..
2023.07.15 -
Spring Webflux - Scheduler
Scheduler란 Reactor Sequence에서 사용되는 스레드를 관리해주는 관리자 주요 역할 스레드 관리 비동기 작업을 실행할 스레드 풀을 관리 별도의 스레드에서 실행되며, 블로킹되지 않고 비동기적으로 처리 작업 스케줄링 비동기 작업 실행을 스케줄링. 즉시/지연/주기적 실행 등 다양한 옵션 제공 백프레셔 관리 백프레셔 : Publisher와 Subscriber 간 데이터 흐름 제어, 작업 속도를 조절하여 효율적 데이터 처리를 가능하게 함 Scheduler 전용 Operator subscribeOn(), publishOn() 이 Scheduler 전용 Operator임 적절한 Scheduler를 전달하면 해당 특성에 맞는 스레드가 Reactor Sequence에 할당 subscribeOn() 구독이..
2023.07.15 -
Spring Webflux Sink
Sinks란? Reactor에서 Processor(Publisher + Subscriber) 을 개선한 구현체 Signal을 프로그래밍 방식으로 푸시 Flux 및 Mono의 의미 쳬계를 가짐 멀티 스레드 방식으로 Signal을 전송해도 스레드 안정성 보장 Sinks 사용 방법 Sinks.One 한 건의 데이터를 전송 Mono 방식으로 Subscriber가 데이터를 소비할 수 있도록 함 @Test @DisplayName("mono test") void sinkTest() { Sinks.One sinkOne = Sinks.one(); Mono mono = sinkOne.asMono(); sinkOne.emitValue("Hello", Sinks.EmitFailureHandler.FAIL_FAST); mono..
2023.07.15 -
리액티브 스트림즈, Mono, 그리고 Flux
Mono 0 또는 1개의 결과를 가지는 데이터 스트림 서블릿 스택에서의 Optional과 유사 Flux 0개 이상의 데이터 방출 서블릿 스택에서의 List와 유사 리액티브 스트림즈 핵심 컴포넌트 Publisher : 스트림 데이터를 생성/방출 subscriber에게 데이터 전달 Mono와 Flux도 Publsiher 타입 Subscriber : Publisher에 방출된 데이터를 처리 publisher에게 받은 데이터를 소비하거나 다른 작업 수행 가능, 백프레셔를 통해 데이터 흐름 조절 가능 subscription : Publisher와 Subscriber 간의 연결을 나타냄. Subscriber는 Subscription을 통해 Publisher의 데이터를 요청/취소 가능 Processor : Publi..
2023.07.14 -
Reactive programming - Spring webflux
리액티브 프로그래밍 - 데이터가 변경될 때마다 이벤트를 발생시켜 데이터를 계속적으로 전달하는 것 - 실행할 동적을 구체적으로 명시하는 명령형 프로그래밍과 달리 단순히 목표(함수)를 선언 Webflux 비동기적인 웹 애플리케이션을 개발하기 위한 모듈 더 많은 동시 요청 처리, 더 빠른 응답 시간과 확장성 제공 reactor 반응형 스트림 라이브러리 기반 동작 동기 / 비동기 요청한 작업에 대해 완료 여부를 신경써서 작업을 순차적으로 수행하는지 여부 동기 : 다른 작업을 요청한 후 해당 작업이 완료되면 바로 해당 작업을 진행(완료가 되면 즉시 처리) 비동기 : 작업을 요청되고 완료를 기다리지 않고 다른 작업을 실행(한 작업이 완료되기를 기다리지 않고 다른 작업 실행, 완료가 되어도 즉시 처리하지 않음) 작업..
2023.07.14