비동기

· 스프링
최근에 처음으로 기술 면접을 경험했다. 프로젝트에 관한 질문이 많았는데 당시에 비즈니스 로직 중 비동기 처리를 해야 했었다. DB에 접근하는 로직이었기에 @Transactional과 @Async를 함께 적용시켜 사용했다. 이에 대해 면접관이 물었다. @Async와 @Transactional이 내부에서 어떻게 동작하는지 아시나요? 덧붙여서 상상력을 발휘해도 좋다고 했다. 정확하게 AOP 내부 구현을 몰랐던 나는 다음과 같이 대답했다. 아마 트랜잭션 관련 AOP 프록시가 부가 기능을 수행한 뒤 비동기 관련 AOP 프록시가 비동기 부가 기능을 넣고 마지막으로 target을 호출할 것 같습니다. 내부적으로 순서가 있을 것 같은데 반대의 순서도 상관없을 것 같습니다. 정확히 저렇게 말하진 않았겠지만 저런 흐름이었..
알림 적용기 1편 알림 적용기 2편 이것저것 알아봤으니 이제 프로젝트 코드에 알림 트랜잭션 분리를 적용해 보고자 한다. 챌린지 인증 임박 알림 트랜잭션 분리 테스트 작성 @DisplayName("알림 이벤트에 예외가 발생해도 새로운 사이클은 저장된다.") @Test void cycleCreate_pushEventException() throws InterruptedException { // given LocalDateTime now = LocalDateTime.now(); willThrow(new RuntimeException("알림 로직에 예상치 못한 예외 발생!")) .given(pushEventListener).handle(any(PushEvent.class)); // when Long cycleI..
더즈
'비동기' 태그의 글 목록