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
| Azure Service Bus in .NET Core | Kafka Basics | |
RabbitMQ vs Azure Service Bus in .NET Core |
// Install-Package RabbitMQ.Client
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;
public class RabbitMQExample
{
public static void Main()
{
var factory = new ConnectionFactory() { HostName = "localhost" };
// Publisher
using var connection = factory.CreateConnection();
using var channel = connection.CreateModel();
channel.QueueDeclare("demo-queue", false, false, false, null);
string message = "Hello from RabbitMQ!";
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish("", "demo-queue", null, body);
Console.WriteLine($"Sent: {message}");
// Consumer
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var msg = Encoding.UTF8.GetString(ea.Body.ToArray());
Console.WriteLine($"Received: {msg}");
};
channel.BasicConsume("demo-queue", true, consumer);
Console.ReadLine();
}
}
// Install-Package Azure.Messaging.ServiceBus
using Azure.Messaging.ServiceBus;
using System;
using System.Threading.Tasks;
public class AzureServiceBusExample
{
private const string connectionString = "<Your-Connection-String>";
private const string queueName = "demo-queue";
public static async Task Main()
{
await using var client = new ServiceBusClient(connectionString);
// Sender
ServiceBusSender sender = client.CreateSender(queueName);
await sender.SendMessageAsync(new ServiceBusMessage("Hello from Azure Service Bus!"));
Console.WriteLine("Message sent.");
// Receiver
ServiceBusReceiver receiver = client.CreateReceiver(queueName);
ServiceBusReceivedMessage received = await receiver.ReceiveMessageAsync();
Console.WriteLine($"Received: {received.Body}");
}
}
| Aspect | RabbitMQ | Azure Service Bus |
|---|---|---|
| Deployment | Self-hosted (on-prem, Docker, Kubernetes, or VM) | Fully managed (Azure PaaS) |
| Protocols | AMQP, MQTT, STOMP, HTTP | AMQP 1.0 only |
| Scalability | Manual clustering and tuning | Automatic scaling built-in |
| Reliability | Requires HA setup and persistence | Enterprise-grade with geo-redundancy |
| Cost | Free (open-source), infra costs apply | Pay-as-you-go Azure pricing |
RabbitMQ is best when you need flexibility, multi-protocol support, and control over hosting. Azure Service Bus is ideal when you want a fully managed, enterprise-ready, cloud-native messaging solution. The choice depends on whether you prioritize control or managed reliability.
| Azure Service Bus in .NET Core | Kafka Basics | |