MassTransit für C# (.NET): Komplettguide mit Praxisbeispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

MassTransit für C# (.NET): Komplettguide mit Praxisbeispielen

1. Was ist MassTransit und warum braucht man es?

MassTransit ist eine leistungsstarke, quelloffene und weit verbreitete Bibliothek für die Entwicklung verteilter Anwendungen auf der .NET-Plattform. Sie bietet eine hochwertige Abstraktion über verschiedene Message-Broker-Systeme wie RabbitMQ, Azure Service Bus, Amazon SQS/SNS, ActiveMQ und Kafka (über Konnektoren). Das Hauptziel von MassTransit ist es, die Entwicklung von Diensten zu vereinfachen, die über asynchrone Nachrichten kommunizieren, und den Entwickler von den niedrigen Details des jeweiligen Brokers zu befreien.

Warum braucht man MassTransit? In der modernen Microservice-Architektur müssen Dienste zuverlässig und asynchron miteinander kommunizieren. Anstelle direkter HTTP-Aufrufe (die zu kaskadierenden Fehlern und starker Kopplung führen können) wird der Nachrichtenaustausch verwendet. MassTransit übernimmt komplexe Aufgaben wie: Verwaltung von Verbindungen und Kanälen, Wiederholungsversuche bei Fehlern, Fehlerbehandlung, verteilte Transaktionen (durch Sagas), Verwaltung von Warteschlangen und Themen, Serialisierung/Deserialisierung von Nachrichten und bietet eine benutzerfreundliche API zum Senden, Veröffentlichen und Konsumieren von Nachrichten.

Die Bibliothek implementiert mehrere Schlüssel-Patterns: Command-Query Separation (durch Senden von Befehlen), Publish-Subscribe (durch Veröffentlichen von Ereignissen), Request-Response (für synchronen Austausch über asynchrone Nachrichten) und Saga Pattern (zur Steuerung langlebiger Geschäftsprozesse). Dadurch ist MassTransit der De-facto-Standard für den Aufbau zuverlässiger, skalierbarer und testbarer verteilter Systeme auf .NET.

2. Installation

MassTransit wird über NuGet installiert. Abhängig vom verwendeten Message-Broker müssen Sie das Hauptpaket und ein Paket für den jeweiligen Transport installieren.

Basisinstallation (ohne Transport):

dotnet add package MassTransit

Für RabbitMQ:

dotnet add package MassTransit.RabbitMQ

Für Azure Service Bus:

dotnet add package MassTransit.Azure.ServiceBus.Core

Für Amazon SQS:

dotnet add package MassTransit.AmazonSQS

Für Kafka:

dotnet add package MassTransit.Kafka

3. Schnellstart – Minimales funktionsfähiges Beispiel

Nachfolgend finden Sie ein einfaches Beispiel zum Senden und Empfangen einer Nachricht mit RabbitMQ. Stellen Sie sicher, dass RabbitMQ läuft (z. B. über Docker: docker run -d --hostname my-rabbit --name some-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3-management).

using System;
using System.Threading.Tasks;
using MassTransit;

// 1. Nachrichtenvertrag definieren
public record OrderSubmitted
{
    public Guid OrderId { get; init; }
    public string CustomerName { get; init; }
}

// 2. Consumer definieren
public class OrderSubmittedConsumer : IConsumer<OrderSubmitted>
{
    public async Task Consume(ConsumeContext<OrderSubmitted> context)
    {
        var message = context.Message;
        Console.WriteLine($"[Consumer] Bestellung erhalten: {message.OrderId} von {message.CustomerName}");
        await Task.CompletedTask;
    }
}

// 3. Bus konfigurieren und starten
public class Program
{
    public static async Task Main()
    {
        var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
        {
            cfg.Host("localhost", "/", h =>
            {
                h.Username("guest");
                h.Password("guest");
            });

            cfg.ReceiveEndpoint("order-queue", e =>
            {
                e.Consumer<OrderSubmittedC                    

Empfehlungen