-
[Spring] Spring Event로 이벤트 처리하기Company/Troubleshooting 2024. 11. 29. 23:57
개요
운영을 하면서 알림과 같은 기능들을 동기적으로 처리하고 있었다. 이 기능들을 Spring Event를 통해 이벤트 방식으로 변경하여 성능을 높히고 결합도를 낮추기로 하였다.
Spring Event 란
Spring Event는 ApplicationEventPublisher를 통해 애플리케이션 내부에서 발생하는 이벤트를 발행하고, @EventListener를 통해 이벤트를 처리하는 기능을 제공한다.
Spring Event의 특징
- 느슨한 결합: 발행자와 리스너가 서로를 알 필요가 없다.
- 비동기 처리 지원: 이벤트를 비동기로 처리하여 비즈니스 로직과 분리할 수 있다.
- 트랜잭션 지원: 트랜잭션 상태에 따라 이벤트 실행을 제어할 수 있다.
Spring Event 동작 흐름
- 이벤트가 발행되면 Application Context가 이를 감지
- 등록된 리스너가 해당 이벤트를 처리
- 비동기 또는 트랜잭션 제어 옵션에 따라 실행 시점이 결정
적용 예시
잔디 알람
에러 발생 시, 잔디로 웹훅 보내는 부분을 이벤트 처리 방식으로 변경하였다.
비동기 설정 개선
마무리
참고
'Company > Troubleshooting' 카테고리의 다른 글
[Spring] Spring에서 MS-SQL의 쿼리가 느린 경우 (0) 2024.11.01 [RDB] 페이징 처리 Covering Index 적용기 (3) 2024.10.31 [RDB] 인덱스가 갑자기 안타는 경우 (0) 2024.10.29 [QueryDSL] Case when 사용 시 BigDecimal 소숫점이 사라지는 이슈 (1) 2024.10.28 [Java] 이모지 처리 시 주의점 (2) 2024.10.25