728x90 Reactive Programing4 [Reactive Programming] zipWith 1. ZipWithpublic final Flux> zipWith(Publisher source2)두개의 소스를 결합하는 함수이다.다이어 그램을 보면 두개의 스트림을 하나로 합쳐주는 역할을 한다.하지만 E는 결과 스트림에는 없는게 보인다.둘중 하나가 null 이면 결과 스트림으로 방출되지 않는다. Flux userIds = Flux.just(1L,2L,3L); Mono> listMono = userIds.flatMap( i -> { Mono memberMono = Mono.fromCallable(() -> memberRepository.findUser(i)) .. 2024. 11. 9. [Reactive Programming] 속도비교 속도비교실제로 얼마나 속도차이가 나는지 blocking 코드와 reactor 코드를 비교해보자. 코드예제고객에게 쿠폰을 발급하려고 한다. 조건은 가입일 5년 이상, 보유 포인트가 500 이상, 골드 멤버일 경우다.걸리는 시간은 총 6초이다. isGoldMember: 골드 멤버인지 확인한다. 3초걸림.isGreaterThan500point: 보유 포인트 확인. 2초 걸림checkRegisterPeriod: 등록 기간 체크. 1초걸림.package com.p8labs.reactive.compareCode;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Service;import java.time.LocalDate;import j.. 2024. 11. 2. [Reactive Programming] Flux, Mono 개념 서론리액티브 프로그래밍 패러다임은 종종 옵저버 설계 패턴의 확장으로 표현됩니다. Observer Pattern 에서 방출, 구독 이라는 개념을 익혔습니다.리액터는 좀더 많은 연산을 가능하게 해주는 퍼블리셔를 구현하며 결합을 가능하게 합니다. Flux플럭스는 0~N개의 방출된 항목의 비동기 시퀀스를 나타낸다. 선택적으로 완료 신호나 오류에 의해 종료되는 표준 퍼블리셔이다.플럭스의 흐름도 Flux String 복사 예제리스트를 Flux 로 변환한뒤 Flux에서 다시 List 을 반환하는 예제이다.List -> Flux -> List아래 예제는 Flux가 어떻게 동작하는지만 확인해 본다.1. List copyList = new ArrayList();2. List originList = Arrays.asList.. 2024. 10. 14. [Reactive Programming] 개념 Reactive Programing 의 등장현재 소프트웨어의 아키텍처는 아래의 상황을 대응해야 한다.리액티브는 비동기 기반으로 데이터를 처리하여 아래 상황들을 어플리케이션 관점에서 해결해준다..빅데이터 처리다양한 환경:하나의 모바일 디바이스에서 다양한 환경에 애플리케이션이 배포된다.사용패턴: 사용자는 1년 내내 항상 서비스를 이용할수 있으면 밀리초단위의 응답시간을 기대한다여기서 중요한 단어는 빅데이터 처리, 다양한 환경, 밀리초의 응답이라고 생각한다.이를 수용하기 위해 리액티브 프로그래밍이 등장 하였다. Blocking 방식의 문제점코드를 블록킹 방식으로 작성하면 일반적으로는 문제가 없지만 버틀넥(병목)이 발생하면 문제가 크다.그때 Thread 를 추가하거나 서버 또는 자원을 추가해서 해결하는 방법이 .. 2024. 10. 6. 이전 1 다음 728x90 반응형