Skip to content

Çalışma Prensibi

  1. İstemci, Ingress üzerinden POST /orders isteği gönderir:

1

  1. Order Service, Order Database’de bekleyen (pending) bir sipariş oluşturur:

1

  1. Order Service, RabbitMQ’ya bir “Check Credit” (Kredi Kontrolü) olayı yayınlar:

1

  1. RabbitMQ, “Check Credit” olayını User Service’e iletir:

1

  1. User Service, User Database’de kredi kullanılabilirliğini kontrol eder:

1

Eğer kredi yetersizse:

  1. User Service, RabbitMQ’ya bir “Credit Unavailable” (Kredi Yetersiz) olayı yayınlar:

1

  1. RabbitMQ, “Credit Unavailable” olayını Order Service’e iletir:

1

  1. Order Service, Order Database’de siparişin durumunu “Cancelled” (İptal Edildi) olarak günceller:

1

  1. Order Service, RabbitMQ’ya bir “Order Cancelled” (Sipariş İptal Edildi) olayı yayınlar:

1

  1. RabbitMQ, “Order Cancelled” olayını User Service’e iletir:

1

  1. User Service, User Database’de ayrılan krediyi serbest bırakır:

1

  1. Order Service, Ingress üzerinden “Credit Unavailable - Order Cancelled” yanıtını döndürür:

1

  1. Ingress, yanıtı İstemciye iletir:

1

Eğer kredi yeterliyse:

  1. User Service, User Database’de krediyi ayırır:

1

  1. User Service, RabbitMQ’ya bir “Credit Reserved” (Kredi Ayrıldı) olayı yayınlar:

1

  1. RabbitMQ, “Credit Reserved” olayını Order Service’e iletir:

1

  1. Order Service, RabbitMQ’ya bir “Check Stock” (Stok Kontrolü) olayı yayınlar:

1

  1. RabbitMQ, “Check Stock” olayını Product Service’e iletir:

1

  1. Product Service, Product Database’de stok kullanılabilirliğini kontrol eder:

1

Eğer stok mevcutsa:

  1. Product Service, Product Database’de stoku ayırır:

1

  1. Product Service, RabbitMQ’ya bir “Stock Reserved” (Stok Ayrıldı) olayı yayınlar:

1

  1. RabbitMQ, “Stock Reserved” olayını Order Service’e iletir:

1

  1. Order Service, Order Database’de siparişin durumunu “Processing Payment” (Ödeme İşleniyor) olarak günceller:

1

  1. Order Service, RabbitMQ’ya bir “Process Payment” (Ödeme İşleme) olayı yayınlar:

1

  1. RabbitMQ, “Process Payment” olayını Order Service’e iletir:

1

  1. Order Service, Order Database’de siparişin durumunu “Payment Processed” (Ödeme İşlendi) olarak günceller:

1

  1. Order Service, RabbitMQ’ya bir “Payment Processed” olayı yayınlar:

1

  1. RabbitMQ, “Payment Processed” olayını Dispatch Service’e iletir:

1

  1. Dispatch Service, Dispatch Database’de bir sevkiyat kaydı oluşturur:

1

  1. Dispatch Service, RabbitMQ’ya bir “Order Dispatched” (Sipariş Gönderildi) olayı yayınlar:

1

  1. RabbitMQ, “Order Dispatched” olayını Order Service’e iletir:

1

  1. Order Service, Order Database’de siparişin durumunu “Completed” (Tamamlandı) olarak günceller:

1

  1. Order Service, RabbitMQ’ya bir “Order Completed” (Sipariş Tamamlandı) olayı yayınlar:

1

  1. RabbitMQ, “Order Completed” olayını Product Service’e iletir:

1

  1. Product Service, Product Database’de stok seviyelerini günceller:

1

  1. Order Service, Ingress üzerinden siparişin tamamlandığı yanıtını döndürür:

1

  1. Ingress, yanıtı İstemciye iletir:

1

Eğer stok yetersizse:

  1. Product Service, RabbitMQ’ya bir “Stock Unavailable” (Stok Yetersiz) olayı yayınlar:

1

  1. RabbitMQ, “Stock Unavailable” olayını Order Service’e iletir:

1

  1. Order Service, Order Database’de siparişin durumunu “Cancelled” (İptal Edildi) olarak günceller:

1

  1. Order Service, RabbitMQ’ya bir “Order Cancelled” (Sipariş İptal Edildi) olayı yayınlar:

1

  1. RabbitMQ, “Order Cancelled” olayını User Service’e iletir:

1

  1. User Service, User Database’de ayrılan krediyi serbest bırakır:

1

  1. Order Service, Ingress üzerinden “Stock Unavailable - Order Cancelled” yanıtını döndürür:

1

  1. Ingress, yanıtı İstemciye iletir:

1

Tüm yapı ise aşağıdadır :

1