티스토리 뷰

반응형

 

외부 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/)

 

 

 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함