Skip to content Sipariş Oluşturma

- Client, Ingress üzerinden POST /orders isteği gönderir.
- Ingress, isteği Order Service’e iletir.
- Order Service, Order Database’de bekleyen (pending) bir sipariş oluşturur.
- Order Service, Order Service Sidecar’a “Check Credit” (Kredi Kontrolü) olayını yayınlar.
- Order Service Sidecar, RabbitMQ’ya “Check Credit” olayını yayınlar.
Kredi Kontrolü:

- RabbitMQ, “Check Credit” olayını User Service Sidecar’a iletir.
- User Service Sidecar, User Service’e kredi kontrolü yapar.
- User Service, User Database’de kredi mevcudiyetini kontrol eder.
- Eğer kredi mevcut değilse:
- User Service, User Service Sidecar’a “Credit Unavailable” (Kredi Mevcut Değil) olayını yayınlar.
- User Service Sidecar, RabbitMQ’ya “Credit Unavailable” olayını yayınlar.
- RabbitMQ, “Credit Unavailable” olayını Order Service Sidecar’a iletir.
- Order Service Sidecar, Order Service’e kredi mevcut olmadığını bildirir.
- Order Service, Order Database’de siparişin durumunu “Cancelled” (İptal Edildi) olarak günceller.
- Order Service, Order Service Sidecar’a “Order Cancelled” (Sipariş İptal Edildi) olayını yayınlar.
- Order Service Sidecar, RabbitMQ’ya “Order Cancelled” olayını yayınlar.
- RabbitMQ, “Order Cancelled” olayını User Service Sidecar’a iletir.
- User Service Sidecar, User Service’e ayrılan krediyi serbest bırakmasını söyler.
- User Service, User Database’de ayrılan krediyi serbest bırakır.
- Order Service, Ingress’e “Credit Unavailable - Order Cancelled” (Kredi Mevcut Değil - Sipariş İptal Edildi) yanıtını döndürür.
- Ingress, Client’a yanıtı iletir.
- Eğer kredi mevcutsa:
- User Service, User Database’de krediyi ayırır.
- User Service, User Service Sidecar’a “Credit Reserved” (Kredi Ayrıldı) olayını yayınlar.
- User Service Sidecar, RabbitMQ’ya “Credit Reserved” olayını yayınlar.
- RabbitMQ, “Credit Reserved” olayını Order Service Sidecar’a iletir.
- Order Service Sidecar, Order Service’e kredi ayrıldığını bildirir.
Stok Kontrolü:

- Order Service, Order Service Sidecar’a “Check Stock” (Stok Kontrolü) olayını yayınlar.
- Order Service Sidecar, RabbitMQ’ya “Check Stock” olayını yayınlar.
- RabbitMQ, “Check Stock” olayını Product Service Sidecar’a iletir.
- Product Service Sidecar, Product Service’e stok kontrolü yapar.
- Product Service, Product Database’de stok mevcudiyetini kontrol eder.
- Eğer stok mevcutsa:
- Product Service, Product Database’de stoku ayırır.
- Product Service, Product Service Sidecar’a “Stock Reserved” (Stok Ayrıldı) olayını yayınlar.
- Product Service Sidecar, RabbitMQ’ya “Stock Reserved” olayını yayınlar.
- RabbitMQ, “Stock Reserved” olayını Order Service Sidecar’a iletir.
- Order Service Sidecar, Order Service’e stok ayrıldığını bildirir.
- Eğer stok mevcut değilse:
- Product Service, Product Service Sidecar’a “Stock Unavailable” (Stok Mevcut Değil) olayını yayınlar.
- Product Service Sidecar, RabbitMQ’ya “Stock Unavailable” olayını yayınlar.
- RabbitMQ, “Stock Unavailable” olayını Order Service Sidecar’a iletir.
- Order Service Sidecar, Order Service’e stok mevcut olmadığını bildirir.
- Order Service, Order Database’de siparişin durumunu “Cancelled” (İptal Edildi) olarak günceller.
- Order Service, Order Service Sidecar’a “Order Cancelled” (Sipariş İptal Edildi) olayını yayınlar.
- Order Service Sidecar, RabbitMQ’ya “Order Cancelled” olayını yayınlar.
- RabbitMQ, “Order Cancelled” olayını User Service Sidecar’a iletir.
- User Service Sidecar, User Service’e ayrılan krediyi serbest bırakmasını söyler.
- User Service, User Database’de ayrılan krediyi serbest bırakır.
- Order Service, Ingress’e “Stock Unavailable - Order Cancelled” (Stok Mevcut Değil - Sipariş İptal Edildi) yanıtını döndürür.
- Ingress, Client’a yanıtı iletir.
Ödeme İşleme:

- Order Service, Order Database’de siparişin durumunu “Processing Payment” (Ödeme İşleniyor) olarak günceller.
- Order Service, Order Service Sidecar’a “Process Payment” (Ödeme İşle) olayını yayınlar.
- Order Service Sidecar, RabbitMQ’ya “Process Payment” olayını yayınlar.
- RabbitMQ, “Process Payment” olayını Order Service Sidecar’a iletir.
- Order Service Sidecar, Order Service’e ödemeyi işlemesini söyler.
- Order Service, Order Database’de siparişin durumunu “Payment Processed” (Ödeme İşlendi) olarak günceller.
- Order Service, Order Service Sidecar’a “Payment Processed” (Ödeme İşlendi) olayını yayınlar.
- Order Service Sidecar, RabbitMQ’ya “Payment Processed” olayını yayınlar.
Teslimat Başlatma:

- RabbitMQ, “Payment Processed” olayını Dispatch Service Sidecar’a iletir.
- Dispatch Service Sidecar, Dispatch Service’e Dispatch Order Saga’yı başlatmasını söyler.
- Dispatch Service, Dispatch Database’de bir teslimat kaydı oluşturur.
- Dispatch Service, Dispatch Service Sidecar’a “Order Dispatched” (Sipariş Teslimata Çıktı) olayını yayınlar.
- Dispatch Service Sidecar, RabbitMQ’ya “Order Dispatched” olayını yayınlar.
Siparişin Tamamlanması:

- RabbitMQ, “Order Dispatched” olayını Order Service Sidecar’a iletir.
- Order Service Sidecar, Order Service’e siparişin teslimata çıktığını bildirir.
- Order Service, Order Database’de siparişin durumunu “Completed” (Tamamlandı) olarak günceller.
- Order Service, Order Service Sidecar’a “Order Completed” (Sipariş Tamamlandı) olayını yayınlar.
- Order Service Sidecar, RabbitMQ’ya “Order Completed” olayını yayınlar.
- RabbitMQ, “Order Completed” olayını Product Service Sidecar’a iletir.
- Product Service Sidecar, Product Service’e stok seviyelerini güncellemesini söyler.
- Order Service, Ingress’e sipariş tamamlandı yanıtını döndürür.
- Ingress, Client’a yanıtı iletir.