Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
6 yazı bulundu #masstransit
Client Sürüm Geçişleri: RabbitMQ.Client 6→7 (IModel'dan IChannel'a) ve MassTransit 8→9
Backend SERİ 14

Client Sürüm Geçişleri: RabbitMQ.Client 6→7 (IModel'dan IChannel'a) ve MassTransit 8→9

RabbitMQ.Client 7'ye geçiş ilk derlemede 5, ikinci dalgada 10 hata verdi; asıl riskler derleyicinin göstermediği body ömrü, timeout'un iptale dönmesi ve eşzamanlılık. RabbitMQ 4.x'te mirroring policy'sinin reddi, queue tipi uyuşmazlığı, AMQP 1.0 client'ı, MassTransit 9'un lisanssız açılmaması ve v8 desteğinin 31 Aralık 2026'da bitmesi, eski Service Bus SDK'sının karşılıkları.

8 Kas 2026 13 dk 6
Message Queue Kodunu Test Etmek: Testcontainers, MassTransit Test Harness ve Contract Testleri
Backend SERİ 13

Message Queue Kodunu Test Etmek: Testcontainers, MassTransit Test Harness ve Contract Testleri

Mantığı broker'dan ayırıp unit test et, broker davranışını Testcontainers ile gerçek RabbitMQ'da dene, beklemeyi Task.Delay ile değil sinyal ve sınırlı polling ile çöz. MassTransit test harness'ı, negatif assert'in hareketsizlik maliyeti, Total→TotalAmount değişikliğinin varsayılan JSON ayarlarıyla sessizce 0'a dönmesi ve .NET 10'da xUnit v3 için gereken Microsoft.Testing.Platform ayarı.

8 Kas 2026 12 dk 5
Idempotent Consumer ve Inbox: Aynı Mesaj İki Kez Geldiğinde
Backend SERİ 10

Idempotent Consumer ve Inbox: Aynı Mesaj İki Kez Geldiğinde

Aynı mesajın ikinci kez işlenmesini kontrolle değil, veritabanındaki bir unique constraint'le engelle: MessageId'li inbox satırını iş verisiyle aynı transaction'da yaz ya da iş anahtarına ON CONFLICT uygula. Check-then-act'in iki fatura kestiği gerçek koşu, PostgreSQL ile inbox ve upsert, yan etkiler, dedupe temizliği ve MassTransit inbox'ı.

8 Kas 2026 11 dk 5
Consumer'da Retry ve Redelivery: Immediate, Delayed ve Exponential Backoff
Backend SERİ 08

Consumer'da Retry ve Redelivery: Immediate, Delayed ve Exponential Backoff

Geçici hatayı kısa in-memory retry'la, uzun beklemeyi broker'la çöz; kalıcı hatayı hiç deneme, DLQ'ya gönder. RabbitMQ 4.4'te nack ile requeue'nun 5 saniyede 8036 teslimlik döngüsü, TTL + DLX bekleme queue'ları, quorum queue'nun yerleşik delayed retry'ı, Service Bus'ta scheduled retry, Kafka retry topic'leri ve MassTransit UseMessageRetry gerçek çıktılarla.

8 Kas 2026 17 dk 4
MassTransit ile Mesajlaşma: Consumer, Publish/Send ve Broker Topology'si — v9 Lisansı ve Alternatifler
Backend SERİ 07

MassTransit ile Mesajlaşma: Consumer, Publish/Send ve Broker Topology'si — v9 Lisansı ve Alternatifler

MassTransit, connection, ack, serialization ve topology'yi üstlenip consumer'ı tek bir IConsumer<T>'ye indirir; bedeli kendi exchange convention'ı, zarf formatı ve v9'da ticari lisans. Billing'i MassTransit 8.5.12'ye taşıyıp publish/send farkını, oluşan RabbitMQ topology'sini ve zarfı gösteriyor, v9'un lisanssız açılmadığını gerçek çıktıyla görüp v8, Wolverine, Rebus, NServiceBus ve Brighter arasında karar tablosu kuruyoruz.

8 Kas 2026 11 dk 5
Saga'yı .NET'te Uygulamak: Persist Edilen State Machine, Timeout ve Compensation
Yazılım Mimarisi SERİ 09

Saga'yı .NET'te Uygulamak: Persist Edilen State Machine, Timeout ve Compensation

Bir saga'yı .NET'te güvenilir kılmak için state'ini correlation id ile bulunan ve concurrency token taşıyan bir tabloda saklar, kararı (adım, message) çiftini eşleyen saf bir switch expression'a bırakır, command'ları aynı transaction'da outbox'a yazar ve her bekleme adımına o adıma bağlı bir timeout koyarsın. EF Core ve SQLite ile kayıp ödeme cevabı, timeout yarışı, geç gelen ödeme ve başarısız refund senaryoları gerçek çıktılarla; aynı saga MassTransit 8 ve Wolverine ile, lisans notlarıyla.

7 Kas 2026 18 dk 5
Blog Haritası