[Project Reactor] 14. Sequence 동작시간 측정을 위한 오퍼레이터 (6)

y001·2025년 5월 2일

Reactive Programming

목록 보기
20/30
post-thumbnail

elapsed() 오퍼레이터

elapsed()Flux에서 emit되는 각 데이터 항목마다 이전 항목이 emit된 이후 경과한 시간(ms) 을 측정하여 함께 emit하는 오퍼레이터이다.
각 요소는 Tuple2<Long, T> 형태로 전달되며, 첫 번째 값(T1)은 경과 시간, 두 번째 값(T2)는 원래의 데이터이다.

Flux.range(1, 5)
    .delayElements(Duration.ofSeconds(1)) // 1초 간격으로 emit
    .elapsed()
    .subscribe(data -> System.out.println("Elapsed Time: " + data.getT1() + "ms, Data: " + data.getT2()));

Thread.sleep(6000);
  • 출력 결과
Elapsed Time: 1005ms, Data: 1  
Elapsed Time: 1003ms, Data: 2  
Elapsed Time: 1002ms, Data: 3  
Elapsed Time: 1001ms, Data: 4  
Elapsed Time: 1004ms, Data: 5
  • 데이터와 함께 경과 시간 측정을 함께 다루고 싶을 때 유용함
  • 성능 모니터링, 타이밍 분석, 메트릭 수집 등에 활용 가능
  • 반환 타입은 Flux<Tuple2<Long, T>> 형태이며, T1 = elapsed time, T2 = 원본 데이터
  • 내부적으로 이전 시점과의 시간 차를 계산하여 emit

0개의 댓글