IConfiguration vs IOptions NET
Synchronous and Asynchronous in .NET Core
Model Binding and Validation in ASP.NET Core
ControllerBase vs Controller in ASP.NET Core
ConfigureServices and Configure methods
IHostedService interface in .NET Core
ASP.NET Core request processing
| Retry Policies | Entity Framework Core | |
☠️ Dead Letter Queues (DLQs) |
A Dead Letter Queue (DLQ) is a special queue used to store messages that cannot be delivered or processed successfully. Instead of losing these messages, they are moved to a DLQ for later inspection, troubleshooting, or reprocessing.
Azure Service Bus automatically provides a DLQ for each queue and subscription.
// Install-Package Azure.Messaging.ServiceBus
using Azure.Messaging.ServiceBus;
using System;
using System.Threading.Tasks;
public class DeadLetterExample
{
private const string connectionString = "<Your-Service-Bus-Connection-String>";
private const string queueName = "demo-queue";
public static async Task Main()
{
await using var client = new ServiceBusClient(connectionString);
// Receiver for Dead Letter Queue
string deadLetterQueuePath = EntityNameFormatter.FormatDeadLetterPath(queueName);
ServiceBusReceiver dlqReceiver = client.CreateReceiver(deadLetterQueuePath);
Console.WriteLine("Reading messages from Dead Letter Queue...");
var message = await dlqReceiver.ReceiveMessageAsync();
if (message != null)
{
Console.WriteLine($"Dead-lettered message: {message.Body}");
Console.WriteLine($"Reason: {message.DeadLetterReason}");
Console.WriteLine($"Description: {message.DeadLetterErrorDescription}");
}
}
}
Dead Letter Queues are essential for building resilient distributed systems. They capture failed messages for later analysis and reprocessing, ensuring no data is silently lost. In .NET Core, DLQs can be used with Azure Service Bus, RabbitMQ, or Kafka depending on your messaging infrastructure.
| Retry Policies | Entity Framework Core | |