Skip to the content.

Use Case: Migrating from MassTransit to SlimMessageBus with Azure Service Bus

This guide provides a practical example demonstrating the migration from using MassTransit with Azure Service Bus to SlimMessageBus with Azure Service Bus.


Why migrate?

SlimMessageBus provides several advantages:


NuGet Packages

MassTransit (before migration)

dotnet add package MassTransit
dotnet add package MassTransit.Azure.ServiceBus.Core

SlimMessageBus (after migration)

dotnet add package SlimMessageBus
dotnet add package SlimMessageBus.Host.AzureServiceBus
dotnet add package SlimMessageBus.Host.Serialization.SystemTextJson

MassTransit Example (Program.cs)

Here’s how you typically configure MassTransit with Azure Service Bus and JSON serialization:

using MassTransit;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddMassTransit(bus =>
{
    bus.UsingAzureServiceBus((context, cfg) =>
    {
        cfg.Host(builder.Configuration["AzureServiceBus:ConnectionString"]);

        cfg.ConfigureJsonSerializerOptions(opts =>
        {
            opts.PropertyNamingPolicy = System.Text.Json.JsonNamingPolicy.CamelCase;
        });

        cfg.ReceiveEndpoint("order-queue", endpoint =>
        {
            endpoint.Consumer<OrderCreatedConsumer>();
        });
    });
});

var app = builder.Build();

app.MapGet("/", () => "MassTransit with Azure Service Bus running.");

app.Run();

// Message definition
public record OrderCreated(Guid OrderId);

// Consumer definition
public class OrderCreatedConsumer : IConsumer<OrderCreated>
{
    public async Task Consume(ConsumeContext<OrderCreated> context)
    {
        Console.WriteLine($"Order Created: {context.Message.OrderId}");
    }
}

SlimMessageBus Example (Program.cs)

Here’s an equivalent configuration using SlimMessageBus with Azure Service Bus:

using SlimMessageBus;
using SlimMessageBus.Host.AzureServiceBus;
using SlimMessageBus.Host.Serialization.SystemTextJson;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddSlimMessageBus(mbb =>
{
    mbb.WithProviderAzureServiceBus(cfg =>
    {
        cfg.ConnectionString = builder.Configuration["AzureServiceBus:ConnectionString"];
        cfg.SubscriptionName("my-service");
    });
    mbb.Produce<OrderCreated>(x => x.DefaultQueue("order-queue"));
    mbb.Consume<OrderCreated>(x => x.Queue("order-queue"));
    mbb.AddJsonSerializer();
    mbb.AddServicesFromAssemblyContaining<OrderCreatedEventConsumer>();
});

var app = builder.Build();

app.MapGet("/", () => "SlimMessageBus with Azure Service Bus running.");

app.Run();

// Message definition (same as before)
public record OrderCreated(Guid OrderId);

// Consumer definition adapted to SlimMessageBus
public class OrderCreatedConsumer : IConsumer<OrderCreated>
{
    public async Task OnHandle(OrderCreated message, CancellationToken cancellationToken)
    {
        Console.WriteLine($"Order Created: {message.OrderId}");
    }
}

Key Migration Points


Additional Features in SlimMessageBus


For more advanced usage and additional features, please review the SlimMessageBus documentation.