← Bütün Patternlər
🩰

Choreography

Mərkəzi idarəçi yoxdur. Hər servis event alır, öz işini görür, sonra yeni event atır — rəqqaslar kimi hər kəs öz hissəsini bilir.

🎯
Orchestration-dan fərqi

Orchestrator yoxdur. Servislər event-ə reaksiya verərək öz-özlərini koordinasiya edirlər.

🔄
Event Chain

Order→OrderCreated→Payment listen→PaymentDone→Inventory listen→Reserved→Shipping listen→...

🛠️
Alətlər

Kafka, RabbitMQ, Spring Cloud Stream, NATS. Event schema management üçün Avro/Protobuf.

İNTERAKTİV

Vizual İzah

Mərhələ {{ currentStep + 1 }}: {{ steps[currentStep].title }}

{{ s.icon }}
{{ s.name }}
{{ s.status }}
JAVA

Kod Nümunəsi

PaymentEventListener.java
// Hər servis öz event-ini dinləyir və reaksiya verir
@Component
public class PaymentEventListener {

    @KafkaListener(topics = "order-events")
    public void onOrderCreated(OrderCreatedEvent event) {
        // Ödəniş et
        paymentService.charge(event.getOrderId(), event.getTotal());
        // Yeni event at — növbəti servis dinləyir
        kafkaTemplate.send("payment-events",
            new PaymentCompletedEvent(event.getOrderId()));
    }
}

// Inventory məhz payment-events dinləyir
@Component
public class InventoryEventListener {
    @KafkaListener(topics = "payment-events")
    public void onPaymentCompleted(PaymentCompletedEvent event) {
        inventoryService.reserve(event.getOrderId());
        kafkaTemplate.send("inventory-events",
            new InventoryReservedEvent(event.getOrderId()));
    }
}
✅ Üstünlükləri
  • SPOF yoxdur — mərkəzi idarəçi yoxdur
  • Servislər tamamilə müstəqildir (loose coupling)
  • Sadə axınlar üçün çox azdır
⚠️ Riskləri
  • Mürəkkəb axınlarda debug çox çətindir
  • Event chain pozulsa tapması çətin
  • Distributed monitoring vacibdir