Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
Managing Dead-Letter Queues: Finding, Inspecting and Reprocessing Poison Messages
Run the DLQ like a work queue: read why each message failed from its headers, alert on growth, and after the fix send it back with a dry run, filters, a cap and your own replay counter. Real output shows RabbitMQ's x-death count not advancing on a client republish, Service Bus DLQ reason codes, a wrong original-topic bug in a Kafka DLT and MassTransit _error headers.
Azure Service Bus .NET SDK: Queues, Topics/Subscriptions, Sessions and ServiceBusProcessor
Register ServiceBusClient as a singleton with AddAzureClients, use managed identity instead of a connection string in Azure, run ServiceBusProcessor with AutoCompleteMessages=false and lock renewal, and use sessions for ordered work. Real emulator output: lock loss, three attempts hitting the DLQ in one second, filters, sessions, scheduled messages and duplicate detection.
Getting Started with Message Queues in .NET: RabbitMQ, Azure Service Bus and Kafka Clients, Which One When
RabbitMQ for flexible routing and per-message ack/retry, Azure Service Bus for a managed service on Azure, Kafka for high volume and replay; the series starts with raw clients and moves on to abstractions. The three brokers' models, a practical comparison table, a program sending and reading the same OrderPlaced with three clients, the Docker Compose environment and a note on Amazon SQS/SNS.