스프링 이벤트

  • 스프링 프레임워크는 다양한 타입의 이벤트 메시지를 게시하고 구독할 수 있는 메커니즘을 제공
  • 이를 스프링 이벤트라고 함
  • RabbitMQ, ActiveMQ 같은 외부 시스템 메시지 브로커는 아님
    • 외부 메시지 브로커의 특징
      • 프로세스와 프로세스 또는 인스턴스와 인스턴스 사이 메지시를 게시하고 구독
        • MSA 환경에서 컴포넌트간 통신
      • 메시지를 게시, 구독하는 과정에서 데이터 누락 없는 신뢰성 보장
  • 스프링 에빈트는 스프링 애플리케이션 내부에서 이벤트를 게시하고 구독하는 목적으로 사용
  • 이 장에서는 두 가지 방법을 사용하여 멀티 스레드로 이벤트를 처리하는 방법을 설명함
    • 첫 번째는 이벤트 메시지를 전달하는 ApplicationEventMulticaster를 설정하는 방법
    • 두 번째는 스프링 프레임워크에서 제공하는 @Async 애너테이션을 사용하는 방법

스프링 이벤트 장점

  • 이벤트를 게시하는 클래스와 구독하는 클래스의 의존관계를 분리할 수 있음
  • 이벤트를 게시, 구독하는 두 클래스를 비동기로 처리할 수 있음
  • 게시된 하나의 이벤트 메시지를 여러개의 구독 클래스가 수신가능
  • 스프링 이벤트를 이용해 트랜잭션을 효율적으로 사용할 수 있음

사용자 정의 이벤트 처리

비동기 사용자 정의 이벤트 처리

@Async 애너테이션을 사용한 비동기 이벤트 처리

@EventListener

스프링 애플리케이션 이벤트

트랜잭션 시점에 구독한 이벤트 처리