티스토리 뷰

반응형
반응형

우리가 보통 api 통신을 하기 위해서 RestTemplate 를 사용합니다. 

 

사용하다가 가끔 Async 방식을 사용해야 할 때가 있습니다. 

 

음... 저 같은 경우는 다른 서버에 Push처럼 notice 줄 때 굳이 응답 값을 기다릴 필요가 없어서 Async 방식을 사용했습니다.

 

처음에는 그냥 @Async 어노테이션만 사용하면 되는 줄 알았는데.. 세상이나 마상에나... Async로 작동을 안했습니다. ㅠㅠ

 

음.. 찾아보니 RestTemplate는 sync방식이기 때문에 일반적인 @Async가 안됐던... .. ....

 

 

그래서 Async 방식으로 통신을 하기 위해서는 2가지 방법으로 나뉩니다.

 

1. AsyncRestTemplate

 

2. WebClient (webflux를 디펜젼시에 추가)

 

여기서는 일반으로 많이 사용하는 1번 방식 AsyncRestTemplate를 사용하겠습니다.

 

먼저 아래와 같이 bean을 선언합니다. 


@Bean
public AsyncRestTemplate asyncRestTemplate(){
return new AsyncRestTemplate();
}

 

 

그리고 사용할 class에서 @autowired 선언 후, 일반적인 RestTemplate사용하듯 사용하시면 됩니다. RestTemplate와 사용법은 동일 합니다.

@Autowired AsyncRestTemplate asyncRestTemplate;

 

asyncRestTemplate.postForEntity(url, json, String.class);
}catch (RestClientException e){
e.printStackTrace();
logger.debug("PUSH SEND ERROR", e);
}catch (Exception e){
e.printStackTrace();
logger.debug("PUSH ERROR", e);
}

 

저 같은 경우는 단순하게 알리는 용도로만 사용하기 때문에, 저렇게 api를 보내고 종료 시킵니다. 혹시나 응답 값이 에러가 와도 확인용으로 로그만 남깁니다.

 

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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 31
글 보관함