Ereignisse
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
umfasst:Hostingintegration und
Client Integration
RabbitMQ ist ein zuverlässiger Messaging- und Streamingbroker, der einfach in Cloudumgebungen, lokal und auf Ihrem lokalen Computer bereitgestellt werden kann. Mit der .NET AspireRabbitMQ-Integration können Sie eine Verbindung mit vorhandenen RabbitMQ-Instanzen herstellen oder neue Instanzen aus .NET mit dem docker.io/library/rabbitmq
Container-Imageerstellen.
Die RabbitMQ Hosting-Integration modelliert einen RabbitMQ-Server als RabbitMQServerResource-Typ. Um auf diesen Typ und seine APIs zuzugreifen, fügen Sie das NuGet-Paket 📦Aspire.Hosting.RabbitMQ im -App-Host--Projekt hinzu.
dotnet add package Aspire.Hosting.RabbitMQ
Weitere Informationen finden Sie unter dotnet add package oder Verwalten von Paketabhängigkeiten in .NET-Anwendungen.
Rufen Sie in Ihrem App-Hostprojekt AddRabbitMQ in der builder
Instanz auf, um eine RabbitMQ Serverressource hinzuzufügen:
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging");
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
Wenn .NET.NET Aspire dem App-Host ein Containerimage hinzufügt, wie im vorherigen Beispiel mit dem docker.io/library/rabbitmq
-Image gezeigt, wird eine neue RabbitMQ Serverinstanz auf dem lokalen Computer erstellt. Zu RabbitMQwird ein Verweis auf den rabbitmq
Server (die ExampleProject
Variable) hinzugefügt. Die Serverressource RabbitMQ enthält Standard-Anmeldeinformationen mit einem username
von "guest"
und zufällig generiertem password
mithilfe der CreateDefaultPasswordParameter-Methode.
Die WithReference-Methode konfiguriert eine Verbindung im ExampleProject
namens "messaging"
. Weitere Informationen finden Sie im Abschnitt Containerressourcenlebenszyklus.
Tipp
Wenn Sie lieber eine Verbindung mit einem vorhandenen RabbitMQ Server herstellen möchten, rufen Sie stattdessen AddConnectionString auf. Weitere Informationen finden Sie unter Referenzieren vorhandener Ressourcen.
Rufen Sie die WithManagementPlugin-Methode auf, um das RabbitMQ Verwaltungs-Plug-In der RabbitMQ-Serverressource hinzuzufügen:
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging")
.WithManagementPlugin();
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
Das RabbitMQ-Verwaltungs-Plug-In stellt eine HTTP-basierte API für die Verwaltung und Überwachung Ihres RabbitMQ Servers bereit.
.NET
.NET Aspire fügt dem App-Host, der das Management-Plugin ausführt, ein weiteres Containerimage docker.io/library/rabbitmq-management
hinzu.
Um der RabbitMQ Serverressource ein Datenvolume hinzuzufügen, rufen Sie die WithDataVolume Methode für die RabbitMQ Serverressource auf:
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging")
.WithDataVolume(isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
Das Datenvolume wird verwendet, um die RabbitMQ Serverdaten außerhalb des Lebenszyklus des Containers zu speichern. Das Datenvolume wird am /var/lib/rabbitmq
Pfad im RabbitMQ Servercontainer bereitgestellt und wenn kein name
Parameter angegeben wird, wird der Name zufällig generiert. Weitere Informationen zu Datenvolumes und Details dazu, warum sie gegenüber Bind-Mountsbevorzugt werden, finden Sie unter Docker-Dokumentation: Volumes.
Rufen Sie die RabbitMQ-Methode auf, um der WithDataBindMount Server-Ressource ein Datenbindungs-Mount hinzuzufügen.
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging")
.WithDataBindMount(
source: @"C:\RabbitMQ\Data",
isReadOnly: false);
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
Wichtig
Daten Binden von Bereitstellungen mit eingeschränkter Funktionalität im Vergleich zu Volumes, die eine bessere Leistung, Portabilität und Sicherheit bieten, wodurch sie für Produktionsumgebungen besser geeignet sind. Bind-Mounts ermöglichen jedoch den direkten Zugriff und die Änderung von Dateien auf dem Hostsystem, ideal für die Entwicklung und Tests, bei denen Echtzeitänderungen notwendig sind.
Datenbind-Mounts basieren auf dem Dateisystem des Hostcomputers, um die RabbitMQ-Serverdaten bei Containerneustarts beizubehalten. Der Datenbindungs-Mount wird auf dem C:\RabbitMQ\Data
unter Windows (oder /RabbitMQ/Data
auf Unix) Pfad auf dem Hostcomputer im RabbitMQ-Servercontainer eingehängt. Weitere Informationen zu Daten-Bind-Mounts finden Sie in der Docker-Dokumentation: Bind-Mounts.
Wenn Sie explizit den Benutzernamen und das Kennwort, die vom Containerimage verwendet werden, angeben möchten, können Sie diese Zugangsdaten als Parameter angeben. Betrachten Sie das folgende alternative Beispiel:
var builder = DistributedApplication.CreateBuilder(args);
var username = builder.AddParameter("username", secret: true);
var password = builder.AddParameter("password", secret: true);
var rabbitmq = builder.AddRabbitMQ("messaging", username, password);
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
Weitere Informationen zum Bereitstellen von Parametern finden Sie unter externe Parameter.
Die RabbitMQ Hosting-Integration fügt automatisch eine Gesundheitsprüfung für die RabbitMQ Server-Ressource hinzu. Der Gesundheitscheck überprüft, ob der RabbitMQ-Server läuft und ob eine Verbindung zu ihm hergestellt werden kann.
Die Hostingintegration basiert auf dem 📦 AspNetCore.HealthChecks.Rabbitmq NuGet-Paket.
Um mit der .NET AspireRabbitMQ-Clientintegration zu beginnen, installieren Sie das 📦Aspire.RabbitMQ.Client-NuGet-Paket im Client-Projekt, d. h. dem Projekt für die Anwendung, die den RabbitMQ-Client verwendet. Die RabbitMQ Clientintegration registriert eine IConnection Instanz, die Sie für die Interaktion mit RabbitMQverwenden können.
dotnet add package Aspire.RabbitMQ.Client
Rufen Sie in der Program.cs-Datei Ihres Client-Projekts die AddRabbitMQClient-Erweiterungsmethode für jedes IHostApplicationBuilder auf, um ein IConnection
für die Verwendung über den Dependency Injection-Container zu registrieren. Die Methode verwendet einen Verbindungsnamenparameter.
builder.AddRabbitMQClient(connectionName: "messaging");
Tipp
Der parameter connectionName
muss mit dem Namen übereinstimmen, der beim Hinzufügen der RabbitMQ Serverressource im App-Hostprojekt verwendet wird. Weitere Informationen finden Sie unter RabbitMQ Serverressource hinzufügen.
Anschließend können Sie die IConnection
Instanz mithilfe der Abhängigkeitseinfügung abrufen. Um die Verbindung von einem Beispieldienst abzurufen, gehen Sie wie folgt vor:
public class ExampleService(IConnection connection)
{
// Use connection...
}
Weitere Informationen zur Abhängigkeitsinjektion finden Sie unter .NET Abhängigkeitsinjektion.
Es kann Situationen geben, in denen Sie mehrere IConnection
-Instanzen mit unterschiedlichen Verbindungsnamen registrieren möchten. Rufen Sie die RabbitMQ-Methode auf, um Schlüssel AddKeyedRabbitMQClient-Clients zu registrieren.
builder.AddKeyedRabbitMQClient(name: "chat");
builder.AddKeyedRabbitMQClient(name: "queue");
Anschließend können Sie die IConnection
Instanzen mithilfe der Abhängigkeitseinfügung abrufen. Um die Verbindung von einem Beispieldienst abzurufen, gehen Sie wie folgt vor:
public class ExampleService(
[FromKeyedServices("chat")] IConnection chatConnection,
[FromKeyedServices("queue")] IConnection queueConnection)
{
// Use connections...
}
Weitere Informationen zu schlüsselbasierten Diensten finden Sie unter .NET Abhängigkeitsinjektion: schlüsselbasierte Dienste.
Die .NET AspireRabbitMQ-Integration bietet mehrere Optionen zum Konfigurieren der Verbindung basierend auf den Anforderungen und Konventionen Ihres Projekts.
Wenn Sie eine Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings
verwenden, können Sie beim Aufrufen der AddRabbitMQClient-Methode den Namen der Verbindungszeichenfolge angeben:
builder.AddRabbitMQClient(connectionName: "messaging");
Aus dem Konfigurationsabschnitt ConnectionStrings
wird anschließend die Verbindungszeichenfolge abgerufen.
{
"ConnectionStrings": {
"messaging": "amqp://username:password@localhost:5672"
}
}
Weitere Informationen zum Formatieren dieser Verbindungszeichenfolge finden Sie in den RabbitMQ URI-Spezifikationsdokumenten.
Die .NET AspireRabbitMQ-Integration unterstützt Microsoft.Extensions.Configuration. Es lädt die RabbitMQClientSettings aus der Konfiguration mithilfe des Schlüssels Aspire:RabbitMQ:Client
. Der folgende Codeausschnitt ist ein Beispiel für eine appsettings.json Datei, die einige der Optionen konfiguriert:
{
"Aspire": {
"RabbitMQ": {
"Client": {
"ConnectionString": "amqp://username:password@localhost:5672",
"DisableHealthChecks": true,
"DisableTracing": true,
"MaxConnectRetryCount": 2
}
}
}
}
Das vollständige RabbitMQ Clientintegration JSON Schema finden Sie unter Aspire.RabbitMQ.Client/ConfigurationSchema.json.
Sie können auch den Action<RabbitMQClientSettings> configureSettings
-Delegaten verwenden, um einige oder alle Optionen inline einzurichten, z. B. um Gesundheitsprüfungen im Code zu deaktivieren.
builder.AddRabbitMQClient(
"messaging",
static settings => settings.DisableHealthChecks = true);
Sie können auch die IConnectionFactory- mithilfe des Action<IConnectionFactory> configureConnectionFactory
Delegatparameters der AddRabbitMQClient
-Methode einrichten. So legen Sie z. B. den vom Client bereitgestellten Namen für Verbindungen fest:
builder.AddRabbitMQClient(
"messaging",
configureConnectionFactory:
static factory => factory.ClientProvidedName = "MyApp");
Standardmäßig aktivieren die .NET.NET Aspire-Integrationen Integritätsprüfungen für alle Dienste. Weitere Informationen finden Sie unter .NET.NET Aspire Integrationsübersicht.
Die .NET Aspire- undRabbitMQ-Integration:
false
ist, wodurch versucht wird, eine Verbindung mit dem RabbitMQ-Server herzustellen und einen Kanal zu erstellen./health
HTTP-Endpunkt, der spezifiziert, dass alle registrierten Gesundheitsprüfungen erfolgreich sein müssen, damit die App bereit ist, Datenverkehr anzunehmen..NET .NET Aspire Integrationen richten automatisch Protokollierungs-, Ablaufverfolgungs- und Metrikkonfigurationen ein, die manchmal als die Säulen der Beobachtbarkeitbezeichnet werden. Weitere Informationen zur Integrationsbeobachtbarkeit und Telemetrie finden Sie unter .NET.NET Aspire Integrationsübersicht. Abhängig vom unterstützenden Dienst unterstützen manche Integrationen möglicherweise nur einige dieser Funktionen. Beispielsweise unterstützen einige Integrationen Protokollierung und Ablaufverfolgung, aber keine Metriken. Telemetrie-Features können auch mithilfe der Techniken deaktiviert werden, die im Abschnitt Konfiguration dargestellt werden.
Die .NET AspireRabbitMQ-Integration verwendet die folgenden Protokollkategorien:
RabbitMQ.Client
Die Integration .NET AspireRabbitMQ gibt mithilfe von OpenTelemetrydie folgenden Ablaufverfolgungsaktivitäten aus:
Aspire.RabbitMQ.Client
Die .NET AspireRabbitMQ-Integration unterstützt derzeit standardmäßig keine Metriken.
Feedback zu .NET Aspire
.NET Aspire ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Ereignisse
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenTraining
Modul
Senden von Nachrichten mit RabbitMQ in einem .NET Aspire-Projekt - Training
In diesem Modul erfahren Sie mehr über den RabbitMQ-Nachrichtenbroker und wie Sie ihn verwenden können, um Mikroservices zu entkoppeln und sicherzustellen, dass sie zuverlässig kommunizieren können. Sie erfahren auch, wie .NET Aspire die Integration in RabbitMQ vereinfacht.
Dokumentation
.NET Aspire Elasticsearch-Integration - .NET Aspire
Erfahren Sie, wie Sie die .NET AspireElasticsearch-Integration verwenden, die sowohl Hosting- als auch Clientintegrationen umfasst.
.NET Aspire Seq-Integration - .NET Aspire
Erfahren Sie, wie Sie die .NET Aspire-Seq-Integration verwenden, um OTLP-Exporteure des OpenTelemetry-Protokolls hinzuzufügen, die Logs und Traces an eine SeqServersenden.
.NET Aspire MongoDB Datenbankintegration - .NET Aspire
Erfahren Sie, wie Sie die .NET AspireMongoDB Datenbankintegration verwenden, die sowohl Hosting- als auch Clientintegrationen umfasst.