스프링에서 메소드 호출을 비동기로 처리해야 하는 경우 Async를 사용하면 됩니다.
예를 들면 첨부파일을 ElasticSearch와 DB에 저장해야 하는 경우
순차적으로 저장하는 것보다 비동기로 처리하면 성능을 개선할 수 있습니다.
비동기 처리를 설정하는 AsyncConfig 클래스입니다.
@Configuration 어노테이션을 통해 이 클래스가 스프링 설정을 담당하고 있음을 나타냅니다.(10라인)
@EnableAsync 어노테이션을 사용하여 스프링의 비동기 설정을 처리합니다.(11라인)
비동기 작업을 지원하는 ThreadPoolTaskExecutor 빈을 생성하는 taskExecutor 메소드입니다.(14 ~ 23라인)
이 메소드에서 생성하는 빈 이름은 "taskExecutor"입니다.(14라인)
기본적으로 유지할 스레드 수를 "4"로 설정합니다.(17라인)
스레드 풀에서 생성할 수 있는 최대 스레드 수를 "8"로 설정합니다.(18라인)
스레드 풀에서 작업 대기할 수를 "1000"으로 설정합니다.(19라인)
스레드 이름의 접두사를 "ElasticThread-"로 설정합니다.(20라인)
ThreadPoolTaskExecutor을 초기화하여 앞에서 작업한 설정을 적용합니다.(21라인)
ThreadPoolTaskExecutor 객체를 생성하여 스프링 컨테이너에 빈으로 등록합니다.(22라인)
@Async 어노테이션을 통해 ElasticSearch post 메소드를 비동기로 호출할 수 있습니다.(83라인)
첨부파일을 ElasticSearch와 DB에 저장하는 saveFileElastic 메소드에서
ElasticSearch에 저장하는 메소드 elasticSearchUtil.post 메소드는 비동기로 호출합니다.(207라인)
로그를 보면 ElasticSearch에 저장하는 메소드가 비동기로 호출된 것을 확인할 수 있습니다.
스프링에서 Async를 사용하면 불필요하게 시간이 걸렸던 작업을 비동기로 처리하여 단축시킬 수 있습니다.
'dev > 스프링' 카테고리의 다른 글
Spring Async CompletableFuture (0) | 2024.06.12 |
---|---|
Spring ElasticSearch Snapshot Backup Restore (0) | 2024.05.21 |
Spring ElasticSearch 첨부파일 조회 (0) | 2024.05.12 |
Spring ElasticSearch 첨부파일 색인 (0) | 2024.05.11 |
Spring ClassPathResource (0) | 2024.04.21 |