MassTransit Saga State Machine ile Model Workflow’u Oluşturmak

Bunlar da hoşunuza gidebilir...

4 Cevaplar

  1. Yalçın ELMAS dedi ki:

    Merhaba Hocam,

    Ne yaptıysam saga işleminin sonucunu respond ile web api içerisine alamadım. İstediğim şu saga workflow çalışacak sonucu isteği yapan web apiye gönderecek o da web apiye istek yapan client e gönderecek.

    Bu konuda bir önerin var mıdır ?

    • Gökhan Gökalp Gökhan Gökalp dedi ki:

      Merhaba, teşekkür ederim öncelikle ilginiz için. Kusura bakmayın henüz yeni vakit bulabildim bloğuma bakmak için. İsteğiniz saga ile oluşturmuş olduğunuz bir flow’da, sync olarak geriye bir response mu dönmek istiyorsunuz? Eğer doğru anladı isem, saga ile farklı servis’lerinizi bir flow’a soktuğunuzda, sync olarak bir cevap geriye dönmek yerine, çalışan servis’ten bir event fırlatıp o event sonucunda bir şeyler yapmak async olarak daha doğru olmaz mı acaba? Çünkü saga flow’unda yaptığı sizin farklı servislerinizi bir sıraya sokarak, ilgili event’lar doğrultusunda işlemleri sırası ile ve oluşabilecek fail durumlarında compensating işlemlerini gerçekleştirmektir. Nasıl bir senaryoda öyle bir ihtiyacınız oldu acaba?

      • Yalçın ELMAS dedi ki:

        Merhaba cevap için teşekkürler, amaç şu aslında;

        Web api’ ye client istek yapıyor. İsteğin sonucu ne oldu konusunda client e bir cevap dönmüyoruz. İşlemleri sıraya sokuyoruz buraya kadar sorun yok ama son işlemde finalize yaptığımızda bu workflow işi bitirdi diye dönmemiz gerekiyor ki işlemin bittiğini client anlasın.

        Aslında sorunu çözdüm. Initilize da gelen isteğin ilk context ini tutup işlem bittiğinde respond ile mesaj gönderdiğinizde workflow a ilk isteği yapan client e sonuç gönderebiliyoruz.

        • Gökhan Gökalp Gökhan Gökalp dedi ki:

          Merhaba tekrardan Yalçın bey. Anladığım kadarı ile async bir işlem gerçekleştirmek istiyorsunuz ve arkada bazı flow’lara sahipsiniz. Bunları ordered bir şekilde çalıştırmak istiyorsunuz bazı state’lere göre. Fakat takıldığım nokta, 1.cisi bu client kim? Çünkü, hem async işletmek istiyorsunuz hem de client’a geri haber vermek istiyorsunuz? Eğer, client’ın bundan haberdar olması gerekiyor ve buna göre belirli başlı işlemler de yapılacaksa, işlem bittiğinde bir event fırlatın ve bu event’i dinleyen ilgili consumer’lar gereken işi yapsın (eğer bu client third party başka bir yer değilse).

          Saygılarımla

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*