sagas.orchestration 패키지는 이 프레임워크에서 가장 복잡한 부분입니다. 사가 기초 인터페이스 SimpleSaga, 사가 인스턴스를 생성/관리하는 클래스 SagaManager가 이 패키지에 있습니다. SagaManager는 사가를 저장하고, 자신이 생성한 커맨드 메시지를 전송하고, 응답 메시지를 구독하고, 사가를 호출하여 응답을 처리합니다. OrderService가 사가를 생성할 때 이벤트 순서는 다음과 같습니다(그림 4-13).
1. OrderService는 CreateOrderSagaState를 생성합니다.
2. OrderService는 SagaManager를 호출하여 사가 인스턴스를 생성합니다.
3. SagaManager는 사가 데피니션의 첫 번째 단계를 실행합니다.
4. CreateOrderSagaState를 호출하여 커맨드 메시지를 생성합니다.
5. SagaManager는 커맨드 메시지를 사가 참여자(소비자 서비스)에게 보냅니다.
6. SagaManager는 사가 인스턴스를 DB에 저장합니다.
▲ 그림 4-13 Orderservice가 주문 생성 사가 인스턴스를 생성할 때 발생하는 이벤트
▲ 그림 4-14 sagaManager가 사가 참여자의 응답 메시지를 수신할 때 발생하는 이벤트