Skip to content

[3주차] 이벤트 리스너 기반 이벤트 처리 과제#156

Open
malaheaven wants to merge 10 commits intoevent-listenerfrom
feature/event-listener
Open

[3주차] 이벤트 리스너 기반 이벤트 처리 과제#156
malaheaven wants to merge 10 commits intoevent-listenerfrom
feature/event-listener

Conversation

@malaheaven
Copy link
Contributor

이벤트 리스너 기반 이벤트 처리의 Step 1~5를 차례대로 따라가며 학습했습니다.

구현 내용

  • Step 1: Spring Event 기초와 이벤트 발행
  • Step 2: TransactionalEventListener와 트랜잭션 안전
  • Step 3: 비동기 처리와 ThreadPool 설정
  • Step 4: 주문-결제-재고 전체 플로우 구현
  • Step 5: 패키지 구조 설계 및 리팩토링

커밋 또한 Step 1부터 Step 5까지 단계별로 진행했습니다.

주요 이벤트 목록

  • OrderCreatedEvent: 주문 생성 시 발행 -> 결제 처리
  • PaymentCompletedEvent: 결제 완료 시 발행 -> 재고 차감

학습 결과

  • 이벤트 기반 설계를 단계별로 경험하며, 이벤트를 활용해 서비스 간 결합도를 낮출 수 있는 방법을 학습함
  • 트랜잭션과 함께 이벤트를 안전하게 발행하면 시스템 상태가 중간에 꼬이지 않고, 일관성을 유지할 수 있음을 학습함

트러블 슈팅

  • 이벤트 리스너에서 이벤트 발행하는 것은 유지보수에 악영향을 끼지는 지양되는 방식

교안과 다른점

  • 공통 이벤트 클래스에 호출된 클래스의 위치를 포함시켜 어디서 발생시킨 이벤트인지 추적이 용이

고민점

  • 추상 이벤트 리스너를 적용했을때 각 이벤트 별로 다른 설정을 적용하고 싶으면 어떻게 해야할까?

비고

기존에 2차 프로젝트에 사용되는 OrderService 클래스가 있어서 이번 과제는 OrderEventPracticeService로 작성

이벤트 플로우 다이어그램

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants