TIL

3. 주요 연산자

변환 — map / flatMap

연산자 변환 동시성 순서
map 동기 1:1 보존
flatMap 비동기 1:N 동시 구독 미보장(인터리빙)
concatMap 비동기 1:N 순차(하나씩) 보존
flatMapSequential 비동기 1:N 동시 구독(eager) 보존(방출만 정렬)

필터

결합 — concat / merge / zip

연산자 구독 방식 방출
concat 앞 완료 후 다음 순차(순서 보존)
merge 동시 구독 도착 순 인터리빙
zip 각 소스 대기 소스별 1개씩 짝지어 결합

곁다리 동작 — doOnXxx

에러 처리

명령형 연산자
정적 기본값 반환 onErrorReturn
대체 경로 실행(동적 fallback) onErrorResume
예외 래핑 후 재전파 onErrorMap
에러 로깅 후 전파 doOnError
finally 정리 doFinally
try-with-resources using
.onErrorReturn(DEFAULT);                    // 에러 → 정적 기본값 방출 후 완료
.onErrorResume(e -> fallbackPublisher(e));  // 에러 → 대체 Publisher로 전환(동적)
.onErrorMap(e -> new BusinessException(e)); // 예외를 다른 타입으로 래핑해 재전파
.onErrorComplete();                         // 에러를 삼키고 정상 완료로 전환
.doOnError(e -> log.warn("failed", e));     // 부수효과만 — 에러는 계속 전파됨

재시도 — retry / retryWhen

Context — 리액티브의 ThreadLocal 대체