일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 리팩토링
- 페이징
- assertj
- 클린코드
- gdg
- OAuth
- 권한
- Spring
- jvm
- clean code
- java
- 스프링 부트
- RabbitMQ
- 스프링부트
- GC
- Refactoring
- spring boot
- 시큐리티
- g1
- load balancing
- 비동기
- oauth2
- tomcat
- Security
- JWT
- Producer
- 스프링
- apache
- 페이스북
- JPA
Archives
- Today
- Total
허원철의 개발 블로그
Spring Boot - Async 본문
이번 글은 Spring Boot 를 이용한 비동기(Async)에 대한 글 입니다.
What..!
비동기 통신이란?
- 자료를 일정한 크기로 정하여 순서대로 전송하는 자료의 전송방식
- (사실 무슨 말인지 모르겠습니다... 간단하게 말하자면) Request 가 들어올 때 하나의 Thread로 모든 처리를 하고 Response 하는 것(Sync 방식)이 아니라, Request 가 들어올 때 기본적인 Thread가 생성이 되면서 별도의 Thread 생성하여 처리하는 것(Async 방식)이라고 말할 수 있습니다.
When..?
1. Log 처리
2. Push 처리
.. 등등 Client에 영향이 끼치지 않고 별개의 처리를 할 때 사용할 수 있습니다.
이렇게 함으로써, Client 에게 조금더 빠른 Response를 줄 수 있게 됩니다.
How..?
1. Gradle 설정
2. Config 설정
3. Service & Controller 설정
4. Result
1. Gradle 설정
- spring-context 3.1 이후에 기능으로, 부트를 사용하는 경우 제약 없이 사용 가능 합니다.
2. Config 설정
- @EableAsync 를 Config 파일에 선언 해줍니다.
기본적으로는, SimpleAsyncTaskExecutor 이 사용됩니다.
3. Service & Controller 설정
[ Service ]
- async를 사용하기 위해서는 두가지 제약이 있습니다.
1) Service 안에서만 가능합니다.
2) 같은 Service 내의 호출은 async 되지 않습니다.
명확한 비교를 하기 위해, 두 개의 메소드를 준비하고, 약 1초정도 멈춘 뒤, 로그를 찍는 형태를 메소드를 준비합니다.
[ Controller ]
Controller에서 Service를 Autowired 하여 /async 와 /sync 를 test 합니다.
4. Result
결과를 보면,
/sync 는 onSync 가 출력되고 난 후 반환되는 것을 볼 수 있고,
/async 는 onAsync 가 출력되지 전에 반환 후 출력되는 것을 볼 수 있습니다.
'web' 카테고리의 다른 글
페이징에 대한 이해 - 2 (396) | 2016.12.08 |
---|---|
페이징에 대한 이해 - 1 (429) | 2016.12.06 |
Spring Boot - Swagger (411) | 2016.12.05 |
Spring Boot - Custom Jackson Converter (415) | 2016.12.05 |
Spring Boot - Cache (412) | 2016.12.05 |
Comments