SpringRactor Stream API를 사용하여 ServiceA가 반환 한 값을 사용하여 ServiceC를 호출하는 예제를 프로토 타입 화하려고했습니다. 그래서 ServiceA 및 ServiceC에 전화를 관련된 대기 시간을 시뮬레이션하기 위해이Spring Reactor를 통해 미래의 HotStream 생성하기
final ExecutorService executor = new ThreadPoolExecutor(4, 4, 10, TimeUnit.MINUTES, new LinkedBlockingQueue<Runnable>());
Streams.defer(executor.submit(new CallToRemoteServiceA()))
.flatMap(s -> Streams.defer(executor.submit(new CallToRemoteServiceC(s))))
.consume(s -> System.out.println("End Result : " + s));
과 같은 코드를 작성() CallToRemoteServiceA 및 CallToRemoteServiceC의 방법에 Thread.sleep() 메소드가 있습니다. 문제는 Thread.sleep() 메서드를 주석 처리 할 때 즉, 서비스 메소드 호출이 실제 메소드에서 true가 아닌 대기 시간을 가지면 소비 메소드가 호출된다는 것입니다. Thread.sleep() 메소드를 그대로두면 소비 메소드가 호출되지 않습니다. 나는 Streams.defer()가 콜드 스트림을 돌려 주므로 등록 후 허용 된 항목에 대한 소비 메소드 만 실행하지만 ExecutorService가 반환 한 Future에서 HotStream을 어떻게 생성 할 수 있는지 궁금합니다.