📌 예시: 병원 예약 시스템 (예약 → 진료 → 결제)
병원 시스템에서는 예약(BookingService), 진료(ConsultationService), **결제(PaymentService)**가 순차적으로 처리돼야 해.
중앙
Orchestrator가 RabbitMQ의 Direct Queue를 사용해 요청을 관리하는 방식.
🔹 흐름
BookingService → Orchestrator에 "예약 요청" 전송Orchestrator → "consultation-queue"에 진료 요청 메시지 전송ConsultationService → "payment-queue"에 결제 요청 메시지 전송PaymentService → Orchestrator에 결제 완료 메시지 전송⚠ 보상 트랜잭션
ConsultationService가 닥터 스케줄 문제로 진료를 수행할 수 없으면?
Orchestrator가 "cancel-booking-queue"에 메시지를 보내 예약을 취소하고, 결제도 롤백!🔹 RabbitMQ를 쓰는 이유?
- 병원 시스템에서는 빠른 응답과 순서 보장이 중요하기 때문!
Orchestrator가Direct Exchange를 사용하여 필요한 서비스만 정확하게 호출 가능.
📌 예시: 온라인 강의 플랫폼 (강의 등록 → 결제 → 수강 알림)
온라인 교육 플랫폼에서는 강의 등록(LectureService), 결제(PaymentService), **수강 알림(NotificationService)**이 독립적으로 동작해야 해.
RabbitMQ의 Fanout Exchange를 사용해 이벤트 기반으로 처리
🔹 흐름
LectureService → "lecture-created-event" 발행 (RabbitMQ "lecture-exchange")PaymentService → "lecture-created-event"을 구독 후 결제 처리 → "payment-success-event" 발행NotificationService → "payment-success-event"을 구독 후 이메일/SMS 알림 전송