Saga'lar ve İş Akışları
Uzun süren süreçleri koordine edin.
Saga'lar ve İş Akışları, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.
Uzun İş Akışlarını Eşgüdümleme
Bazı iş süreçleri zaman içinde birden fazla iletiyi ve adımı kapsar: sipariş verme, ödemeyi alma, stok ayırma ve gönderme. Uzun süreli iş akışı, böyle bir süreci eşgüdümler ve durumunu iletiler arasında izler.
Uzun Süreli İş Akışı Nedir?
Uzun süreli iş akışı, durum bilgisine sahip bir tüketicidir. İlgili iletileri ilişkilendirir, iş akışının geçerli durumunu tutar ve süreç tamamlanana kadar durumlar arasında geçiş yaparak olaylara tepki verir.
Durum Makineli İş Akışları
MassTransit, iş akışlarını MassTransitStateMachine kullanarak durum makineleri şeklinde modeller. Durumları, olayları ve geçişleri bildirime dayalı olarak tanımlarsınız.
dotnet add package MassTransit
// state machine sagas are built inİş Akışı Durumu
Durum, SagaStateMachineInstance uygulayan bir sınıftır. Bir CorrelationId ve adımlar arasında hatırlamanız gereken tüm verileri taşır.
public class OrderState : SagaStateMachineInstance
{
public Guid CorrelationId { get; set; }
public string CurrentState { get; set; }
public decimal Amount { get; set; }
}Durumları ve Olayları Bildirme
Durum makinesinin içinde, ileti türleriyle eşleşen State özelliklerini ve Event özelliklerini bildirirsiniz.
public class OrderSaga : MassTransitStateMachine<OrderState>
{
public State AwaitingPayment { get; private set; }
public State Completed { get; private set; }
public Event<OrderPlaced> OrderPlaced { get; private set; }
public Event<PaymentReceived> PaymentReceived { get; private set; }
}İlişkilendirme
Her olay, genellikle OrderId gibi paylaşılan bir kimlik aracılığıyla doğru iş akışı örneğiyle ilişkilendirilmelidir. Bu işlem, gelen iletileri doğru devam eden iş akışına yönlendirir.
Event(() => PaymentReceived, e =>
e.CorrelateById(m => m.Message.OrderId));Geçişleri Tanımlama
Oluşturucu davranışı birbirine bağlar: ilk olay örneği oluşturur, verileri kaydeder ve bir sonraki duruma geçiş yapar.
Initially(
When(OrderPlaced)
.Then(ctx => ctx.Saga.Amount = ctx.Message.Amount)
.TransitionTo(AwaitingPayment));Bir Durumda Tepki Verme
Yalnızca belirli bir durumda geçerli olan olayları işlemek için During kullanın; ardından takip iletilerini yayınlayıp sonraki duruma geçin.
During(AwaitingPayment,
When(PaymentReceived)
.Publish(ctx => new OrderConfirmed(ctx.Saga.CorrelationId))
.TransitionTo(Completed)
.Finalize());İş Akışı Durumunu Kalıcılaştırma
İş akışı durumu yeniden başlatmalardan sonra da korunmalıdır; bu nedenle Entity Framework, MongoDB, Redis veya başka bir depo içinde saklanır. MassTransit, her iletinin çevresinde örneği yükler ve kaydeder.
x.AddSagaStateMachine<OrderSaga, OrderState>()
.EntityFrameworkRepository(r =>
{
r.ExistingDbContext<OrderDbContext>();
});Zamanlamalarla Zaman Aşımları
İş akışları, bir Schedule kullanarak zaman aşımı planlayabilir (örneğin ödeme 30 dakika içinde alınmazsa iptal edebilir); ardından telafi etmek için zaman aşımı olayını işleyebilir.
Telafi
Daha sonraki bir adım başarısız olursa iş akışı, önceki adımları geri almak için telafi işlemleri çalıştırabilir (ücreti iade etmek, stoğu serbest bırakmak). Böylece dağıtık işlemler olmadan genel süreç tutarlı kalır.
Hızlı Kontrol
İş akışlarını ve uzun süreli süreçleri sınayın.
Özet
Uzun süreli iş akışı, uzun süren iş akışlarını durum bilgisine sahip ve ilişkilendirilmiş bir tüketici olarak eşgüdümler. MassTransit, durum için MassTransitStateMachine ile SagaStateMachineInstance kullanır; State/Event üyeleri bildirilir, ilişkilendirme kimliğe göre yapılır ve geçişler Initially/During aracılığıyla gerçekleştirilir. Durum bir depoda kalıcılaştırılır, zaman aşımları zamanlamaları kullanır ve telafi, başarısızlık durumunda önceki adımları geri alır.
Sıkça Sorulan Sorular
“Saga'lar ve İş Akışları” dersi ücretsiz mi?
Evet — “Saga'lar ve İş Akışları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.
“Saga'lar ve İş Akışları” dersinde ne öğreneceğim?
Uzun süren süreçleri koordine edin. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C# Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Saga'lar ve İş Akışları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Mesajlaşma Kavramları
- Mesaj Üretme ve Tüketme
- Saga'lar ve İş Akışları
- Hata İşleme ve Yeniden Denemeler