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.
Orchestrator yoxdur. Servislər event-ə reaksiya verərək öz-özlərini koordinasiya edirlər.
Order→OrderCreated→Payment listen→PaymentDone→Inventory listen→Reserved→Shipping listen→...
Kafka, RabbitMQ, Spring Cloud Stream, NATS. Event schema management üçün Avro/Protobuf.
// 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()));
}
}