2017-12-28 1 views
2

이전에 파이썬에서 사용했던 웹 응용 프로그램을 Java로 다시 작성하기로 결정했습니다. 내 응용 프로그램에서 아무 블로킹 I/O도 사용하지 않고 수백 개의 API 호출로 구성된 작업을 전달하는 작업자 풀 (Celery + Eventlet 스레드)이있었습니다.스프링 WebFlux가 no-blocking 스레드 풀을 만듭니다.

지금은 스프링 WebFlux을 사용하고 있습니다.하지만 그 풀에 내 작업을 전달할 수있는 작업자 풀을 만드는 방법과 결과를 얻은 다음 계산을 수행하는 방법을 이해할 수 없습니다.

(내가위한 ThreadPoolTaskExecutor를 만들 수있는 가능성에 대해 알고 있지만, 스레드가 차단 스레드입니다)

답변

1

이 아닌 차단 API를 사용하는 경우, 특정 스레드에서 작업을 예약 할 필요가 없습니다 - 원자로가 있다고하고있다 너를 위해서. Spring WebFlux에서는 작업 처리에 사용되는 스레드가 Reactor에 의해 관리되거나 Netty 스레드를 재사용합니다.

Schedulers and threading parts of the reactor reference documentation을 확인하십시오.

+0

브라이언, 도와 주시겠습니까? 컨트롤러에서 들어오는 각 사용자 요청에 대해 600 API 호출을 수행한다고 가정 해 보겠습니다. 실제로 실행 결과를 얻고 몇 가지 계산을 수행해야하며 그 후에 만 ​​결과를 반환해야합니다. . 1) 전체 그룹별로 비슷한 요청을하고 전체 그룹 (스트림 API의 종류)별로 결과 (Flux)를 얻으려면 어떻게해야합니까? 2) 작업자 풀을 사용하지 않고 각 컨트롤러에 대해 큰 요청을하고 컨트롤러 내부에서 결과를 요청하면 원자로가 동일한 내부 실행 풀에서 작업을 전달하게됩니까? –

관련 문제