[SPRING] 비동기 스프링에 여러 threadPoolExecutor를 사용하는 방법
SPRING비동기 스프링에 여러 threadPoolExecutor를 사용하는 방법
두 클래스에서 Spring @Async를 사용하고 있습니다. 둘 다 궁극적으로 인터페이스를 구현하고 있습니다. 두 개의 개별 ThreadPoolTaskExecutor를 만들고 있으므로 각 클래스에는 고유의 ThreadPool이 있습니다. 그러나 프록시가있는 것으로 생각하고 Spring이 비동기 클래스를 구현하는 방법 때문에 @Async 주석을 기본 인터페이스에 넣어야합니다. 이로 인해 두 클래스 모두 동일한 ThreadPoolTaskExecutor를 사용하게됩니다. 이 Bean에 대해 (이 경우 해당 인터페이스를 서비스를 구현하는 클래스를 호출하고 있음) Spring에 말할 수 있습니까?이 ThreadPoolTaskExecutor를 사용하십시오.
해결법
-
==============================
1.메소드에서 @Async를 지정할 때 기본적으로 사용될 실행 프로그램은 여기에 설명 된대로 '주석 구동'요소에 제공되는 실행 프로그램입니다.
메소드에서 @Async를 지정할 때 기본적으로 사용될 실행 프로그램은 여기에 설명 된대로 '주석 구동'요소에 제공되는 실행 프로그램입니다.
그러나 @Async 어노테이션의 value 속성은 지정된 메소드를 실행할 때 기본값 이외의 실행 프로그램을 사용해야 함을 표시해야 할 때 사용할 수 있습니다.
@Async("otherExecutor") void doSomething(String s) { // this will be executed asynchronously by "otherExecutor" }
이 경우 "otherExecutor"는 Spring 컨테이너에있는 Executor Bean의 이름이거나, 또는 Executor와 연관된 규정 자의 이름 일 수 있습니다 (예 : 요소 또는 Spring의 @Qualifier 주석으로 지정된
https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html
그리고 원하는 풀 설정으로 앱에서 otherExecutor bean을 지정해야 할 수도 있습니다.
@Bean public TaskExecutor otherExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(5); executor.setMaxPoolSize(10); executor.setQueueCapacity(25); return executor; }
from https://stackoverflow.com/questions/45776483/how-to-use-multiple-threadpoolexecutor-for-async-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 부트 응용 프로그램에서 junit 테스트가 임베디드 mongoDB를 사용하도록 만드는 방법은 무엇입니까? (0) | 2019.08.14 |
---|---|
[SPRING] Springfox Swagger-UI를 추가했는데 작동하지 않습니다. 무엇을 놓치고 있습니까? (0) | 2019.08.14 |
[SPRING] Java 구성 사용시 스프링 배치 테이블 접 두부 (0) | 2019.08.14 |
[SPRING] RESTful Spring MVC 컨트롤러에서 유효성 검사 오류 및 예외를 처리하는 방법은 무엇입니까? (0) | 2019.08.14 |
[SPRING] 퍼즐 모듈을 사용하여 jdk9로 스프링 부트 실행 (0) | 2019.08.14 |