42. 작업 실행 및 스케줄링 by ys

Executor컨텍스트에서 빈이 없으면 스프링 부트는 비동기 태스크 실행 ( @EnableAsync)과 스프링 MVC 비동기 요청 처리와 자동으로 연관 될 수있는 적절한 기본값과 ThreadPoolTaskExecutor 을 자동으로 구성한다 .

컨텍스트에서 커스텀 Executor 을 정의했다면 , 정규 태스크 실행 (즉 @EnableAsync)은 그것을 손쉽게 사용하지만, Spring MVC 지원은 AsyncTaskExecutor구현 (applicationTaskExecutor)을 필요로하기 때문에 구성되지 않을 것이다 . 목표 배열에 따라, ThreadPoolTaskExecutor로 변경 하거나 ThreadPoolTaskExecutor와 사용자 정의 Executor를 래핑하는 AsyncConfigurer을 둘다 정의할 수 있습니다.

자동 구성된 TaskExecutorBuilder를 사용하면 자동 구성이 기본적으로 수행하는 것을 재현하는 인스턴스를 쉽게 작성할 수 있습니다.

스레드 풀은 로드에 따라 확장 및 축소 할 수있는 8 개의 코어 스레드를 사용합니다. 이러한 기본 설정은 다음 예와 같이 spring.task.execution네임 스페이스를 사용하여 세부 조정할 수 있습니다 .

spring.task.execution.pool.max-threads = 16
spring.task.execution.pool.queue-capacity = 100
spring.task.execution.pool.keep-alive = 10s

이렇게하면 스레드 풀이 바운드 큐를 사용하도록 변경되므로 큐가 가득 차면 (100 개의 작업) 스레드 풀이 최대 16 개의 스레드로 증가합니다. 스레드가 10 초 동안 유휴 상태 일 때 (기본적으로 60 초가 아닌) 스레드가 재생되면서 풀 축소가 더 적극적입니다.

예약 된 작업 실행 ( @EnableScheduling)에 연결해야하는 경우ThreadPoolTaskScheduler도 자동 구성 할 수 있습니다 . 스레드 풀은 기본적으로 하나의 스레드를 사용하며 이러한 설정은 spring.task.scheduling네임 스페이스를 사용하여 세부 조정할 수 있습니다 .

TaskExecutorBuilderBean과 TaskSchedulerBuilderBean 둘다 사용자 정의 실행 프로그램 또는 스케줄러를 작성해야 할 경우 컨텍스트에서 사용 가능하게됩니다.

Last updated