reactor3 reactor: Synchronous generate 원문: reactor reference Flux를 프로그래밍 방식으로 생성하는 가장 간단한 방법은 generator 함수를 사용하는 generate 메서드를 사용하는 것이다. generate는 동기적으로 한번에 하나씩 발행(emission)한다. 여기서 사용되는 싱크(sink)는 SynchronousSink이며 콜백 함수가 호출될 때에 최대 한 번 싱크의 next() 메소드를 호출할 수 있다. 추가적으로 error(Throwable) 이나 complete()를 호출할 수 도 있다. 가장 유용한 메소드의 변형은 다음번에 무엇을 발행할지 결정하기 위해 싱크가 참조할 수 있는 state를 유지할 수 있게 해주는 변형일 것이다. generator 함수는 BiFunction이다.는 state 객체의 타입이고, 는.. 2022. 8. 13. reactor: 동기적인 블로킹 호출을 감싸기 B.1. How Do I Wrap a Synchronous, Blocking Call? 원문: reactor reference 정보의 소스가 동기적이고 블로킹 방식인 경우가 많이 있다. Reactor 애플리케이션에서 이러한 소스를 처리하려면 다음 패턴을 적용한다. Mono blockingWrapper = Mono.fromCallable(() -> { // 1 return /* make a remote synchronous call */ // 2 }) .subscribeOn(Schedulers.boundedElastic()); // 3 blockingWrapper.subscribe(...); (1) fromCallable을 사용하여 새로운 Mono로 만든다. 소스가 하나의 값을 반환하기 때문에 Mono를 .. 2022. 8. 13. reactor: publishOn, subscribeOn() publishOn(scheduler) onNext, onComplete, onError가 지정된 Scheduler의 Worker(thread)에서 실행된다. 이 publishOn을 지정한 이후의 operator들이 수행될 스레딩 컨텍스가 결정된다. 다음 publishOn을 지정하기 전까지 계속 유지된다. 일반적으로 빠른 publisher와 느린 consumer로 구성된 시나리오에서 사용된다. javadoc link 예제 final Flux flux = Flux .range(1, 2) .doOnNext(i -> log.info("range: {}", i)) .publishOn(Schedulers.newSingle("ooo")) .map(i -> 10 + i) .doOnNext(i -> log.info("m.. 2022. 8. 13. 이전 1 다음