SagaManager가 소비자 서비스의 응답을 수신할 때 이벤트 순서는 다음과 같습니다(그림 4-14).
1. 이벤추에이트 트램은 소비자 서비스의 응답을 SagaManager에 전달합니다.
2. SagaManager는 DB에서 사가 인스턴스를 조회합니다.
3. SagaManager는 그다음 사가 데피니션 단계를 실행합니다.
4. CreateOrderSagaState를 호출하여 커맨드 메시지를 생성합니다.
5. SagaManager는 커맨드 메시지를 사가 참여자(주방 서비스)에게 보냅니다.
6. SagaManager는 업데이트 사가 인스턴스를 DB에 저장합니다.
사가 참여자가 실패하면 SagaManager는 보상 트랜잭션을 역순으로 실행합니다.
그 밖에도 이벤추에이트 트램 사가 프레임워크의 sagas.participant 패키지에는 사가 참여자를 작성하기 위해 필요한 SagaCommandHandlersBuilder, SagaCommandDispatcher 클래스가 있습니다. 이 두 클래스는 커맨드 메시지를 핸들러 메서드로 보내고, 핸들러 메서드는 사가 참여자의 비즈니스 로직을 호출하여 응답 메시지를 생성합니다. 이 두 클래스는 주문 서비스에서 어떻게 활용되는지 알아봅시다.