티스토리 뷰
반응형
외부 API를 사용하여 제공 해야하는 서비스에서 외부 통신으로 인해
의도치 않게 대기시간이 길어져 사용자가 우리 서비스를 사용하는데 불편함이 발생했다.
해당 기능을 비동기 방식으로 전환하여 사용자가 페이지 이동을 하고도 작업이 이루어지고
나중에 상태가 변경되도록 작업하고 싶었다.
이 때 Spring에서 제공하는 @Async 어노테이션을 이용할 수 있다.
우선 @Async 어노테이션을 사용하기 위해서는
Configuration 클래스를 만들어 비동기 구성을 활성화시켜줘야한다.
@Configuration
@EnableAsync
public class AsyncConfig {
@Bean(name = "asyncExecutor")
public Executor asyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(3);
executor.setMaxPoolSize(3);
executor.setQueueCapacity(100);
executor.setThreadNamePrefix("AsynchThread-");
executor.initialize();
return executor;
}
}
그런 다음에 필요한 메서드에 @Async 어노테이션을 붙여주면
해당 메서드가 비동기로 처리가 된다.
@Service("HostingService")
public class HostingService {
@Async("asyncExecutor")
public void createAccount(int hostingNumber) throws Exception {
System.out.println("비동기로 처리 됩니다.");
}
}
(참고 : https://howtodoinjava.com/spring-boot2/rest/enableasync-async-controller/)
반응형
'Java' 카테고리의 다른 글
[Java] SSL 인증서 PKIX path building failed 에러 해결 (0) | 2021.09.24 |
---|---|
[Java] Spring RestTemplate timeout 설정 (0) | 2021.09.23 |
[Java] List 중복 제거 (0) | 2021.06.15 |
[JavaScript] $.grep()을 이용한 배열 필터링 (2) | 2021.05.04 |
[Java] 자료형 계산의 결과값이 마이너스로 나오는 문제 (2) | 2021.04.22 |