Mərkəzi Dirijor (Orchestrator) hər servisi sıra ilə çağırır və prosesi tam nəzarətdə saxlayır — orkestri idarə edən kimi.
Mürəkkəb iş axınlarında (sifariş + ödəniş + göndərmə) addımların ardıcıllığını mərkəzi bir yer idarə edir. Debug-u çox rahatdır.
Choreography-də hər kəs öz qərarını verir. Orchestration-da isə hər kəs "Dirijor nə deyir?"ə baxır.
Camunda, Temporal, Netflix Conductor, Apache Airflow, Spring State Machine.
@Service
public class OrderOrchestrator {
public OrderResult processOrder(OrderRequest order) {
// Orchestrator hər addımı ardıcıl idarə edir
// 1. Payment
PaymentResult payment = paymentService.charge(order);
if (!payment.isSuccess()) return OrderResult.failed("Ödəniş uğursuz");
// 2. Inventory
InvResult inv = inventoryService.reserve(order);
if (!inv.isSuccess()) {
paymentService.refund(order); // Compensation
return OrderResult.failed("Anbarda yoxdur");
}
// 3. Shipping
shippingService.dispatch(order);
return OrderResult.success();
}
}