티스토리 뷰
1. Non-Blocking WebFlux 데이터 손실 이슈
2. 샘플코드
import java.util.concurrent.CompletableFuture;
import reactor.core.publisher.Mono;
public class JustTest {
public static void main(String[] args) {
//1번내용 ----------------
String text = "abcd";
Mono<String> mono = Mono.just(text);
mono.subscribe( str->{ //변수 text를 살펴보고, 그에대한 콜백행위는 아래의 출력
System.out.println(str);
});
//2번내용 ----------------
Mono<Object> function = Mono.create( sink->{ //마치 자바스크립트의 Promise 같은 느낌!
//sink.error(new Exception("익셉션")); -> 에러를 발생시킨다.
sink.success("success"); //-> success값을 전달하여준다.
});
function.subscribe( arg->{ //위에서 전달한 success값
System.out.println(arg);
});
//3번내용 ----------------
mono.doOnNext(str->{ //맨 처음 구독한 다음행위에 대한 지정
System.out.println("next : "+str);
}).subscribe();
//4번내용 ----------------
CompletableFuture<?> future = CompletableFuture.supplyAsync(()->{
System.out.println("run!");
return "PARAM";
});
Mono<Object> mono2 = Mono.fromFuture(future); //비동기에 대한 구독!
mono2.subscribe( (param)->{
System.out.println("param : " + param);
});
}
}
Promise가 뭔가요?
“A promise is an object that may produce a single value some time in the future”
프로미스는 자바스크립트 비동기 처리에 사용되는 객체입니다. 여기서 자바스크립트의 비동기 처리란 ‘특정 코드의 실행이 완료될 때까지 기다리지 않고 다음 코드를 먼저 수행하는 자바스크립트의 특성’을 의미합니다. 비동기 처리에 대한 이해가 없으시다면 이전 글 ‘자바스크립트 비동기 처리와 콜백 함수’를 읽어보시길 추천드립니다 :)
2번을 통해서 subscribe 를 통해 에러에 대해서 로그 남긴두 처리가 안된 것 에 대해서 재시도나, 실패로그 기록 등 사후 처리를 진행 하면 될 것 같다.
Publisher 와 subscribe 에 대한 리마인드는 아래 게시글에서 확인
WebFlux 에러 처리에 대한 전략은 아래 블로그에 잘 나와 있어서 정리가 필요 할듯하다.
참고
https://lts0606.tistory.com/302
Spring Webflux 2 (웹플럭스 적용기, 기본 구조)
웹플럭스에 대한 자료를 구글링해보면 영어로된 원문이 참 많다. 그런데 아직 한글로 제대로된 튜토리얼은 안보인다..흠.. 웹플럭스라는 프레임워크는 반응형+함수형 프로그래밍을 기초로 두고
lts0606.tistory.com
https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
자바스크립트 Promise 쉽게 이해하기
(중급) 자바스크립트 입문자를 위한 Promise 설명. 쉽게 알아보는 자바스크립트 Promise 개념, 사용법, 예제 코드. 예제로 알아보는 then(), catch() 활용법
joshua1988.github.io
- Total
- Today
- Yesterday
- 퀜트백
- mongodb
- EC2
- MQ
- Python #FastAPI
- TDD
- 웹개발
- AWS
- SpringBoot
- data crawling
- 웹서비스
- 켄트 백
- kafka
- 테스트주도개발
- MSA
- 분산처리
- 테스트
- Python
- GateWayApi
- data mining
- fastapi
- 테스트 주도 개발
- nodejs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |