← Bütün Patternlər
🌊

Event-Driven Architecture

Servislər bir-birini birbaşa çağırmır, əvəzinə event (hadisə) publish edib, maraqlanan kimsə consume edir. Loose coupling-ın kralıdır.

🎯
Əsas fərq

REST = "Bu işi et" (command). EDA = "Bu iş oldu" (fact/event). Fərq reaksiya əsaslıdır.

📡
3 Komponent

Event Producer: Hadisəni yayır. Event Broker: Kafka/RabbitMQ. Event Consumer: Reaksiya verir.

🛠️
FW/Alətlər

Apache Kafka, RabbitMQ, Spring Cloud Stream, AWS EventBridge, Azure Event Grid.

İNTERAKTİV

Vizual İzah

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

🏪
Order Service
(Producer)
→ OrderPlaced →
📨
Event Broker
(Kafka)
→ Consume →
💳
Payment
📧
Notification
JAVA

Kod Nümunəsi — Spring Cloud Stream

OrderEventHandler.java
// Producer — Event göndər
@Service
public class OrderService {
    private final StreamBridge streamBridge;

    public void placeOrder(Order order) {
        orderRepo.save(order);
        // Hadisə göndər — kim dinləyirsə dinləsin
        streamBridge.send("orderPlaced-out-0",
            new OrderPlacedEvent(order.getId(), order.getTotal()));
    }
}

// Consumer — Event dinlə (Payment Service-də)
@Configuration
public class PaymentEventConsumer {
    @Bean
    public Consumer<OrderPlacedEvent> orderPlaced() {
        return event -> {
            paymentService.processPayment(event.getOrderId(), event.getTotal());
        };
    }
}
✅ Üstünlükləri
  • Tam loose coupling — servisler bir-birini bilmir
  • High scalability — asinxron processing
  • Yeni consumer əlavə etmək çox asandır
⚠️ Riskləri
  • Eventual Consistency — anlıq uyğunsuzluq normal
  • Debugging çox çətin (event chain tracing)
  • Event ordering qrantiya edilməyə bilər