비동기

Java & Spring

🙌 쓰레드풀을 이용해 두 비동기 작업 처리 완료 후 후속 처리하기

전체 코드는 여기에서 확인하실 수 있습니다 :) 두 곳에 Ajax 요청을 보낸 뒤, 결과를 취합해 후속 작업을 해야 한다면? 언제 처리가 완료될지 정확히 알 수 없는 두 가지 작업이 있고, 그 작업들이 모두 완료된 이후에 취합하여 후속작업을 처리해야 한다고 가정해보겠습니다. 가령 서비스 레이어에서 두 곳의 엔드포인트에 요청을 보내고, 응답 값을 취합해서 결과에 따른 분기처리가 필요한 상황이라고 생각해볼 수 있을 것 같아요. 요청한 클라이언트에게 즉시 결과를 응답해야 한다면 두 요청을 쓰레드 풀 작업 큐에 넣고, 두 Future 객체의 get() 메서드를 이용해 기다린 후 응답한다 이 방법의 장점은 하나의 요청이 응답될 때까지 기다렸다가 다음 요청이 나가는 것이 아니라, 동시에 두 가지 요청이 호출된다는 ..

Java & Spring

Spring Async 스프링 비동기 수행

특정 조건을 만족하는 db값들의 그룹이 생성될 경우, 메일로 알림을 보내는 기능을 구현하고 있습니다. 지금까지의 구상은 1) 지도에서 범위를 그리고 완료를 누르면 위도, 경도, 반경을 db에 저장 2) AOP AfterReturning을 이용, db 입력 시마다 db 전체를 훑어 매칭 발생여부를 확인 3) 매칭 발생시 메일 발송 으로 진행해왔습니다. 단, 1)의 진행을 Ajax로 구현하다보니 매칭이 발생하는 db입력이 발생할 경우 사용자에게 2)와 3)의 수행 완료까지 Ajax 리턴이 지연되는 문제가 발생하였습니다. 여러 방법을 강구하다가 결국 Spring이 제공하는 Async 기능을 통해 이용하여 간단히 해결되었습니다. @Configuration 클래스에 @EnableAsync 를 선언하고 @After..

리차드
'비동기' 태그의 글 목록