.NET Aspire RabbitMQ integration
omfattar: Hosting-integration och
Client integrering
RabbitMQ är en tillförlitlig meddelande- och strömningskoordinator som är enkel att distribuera i molnmiljöer, lokalt och på din lokala dator. Med integreringen .NET AspireRabbitMQ kan du ansluta till befintliga RabbitMQ-instanser eller skapa nya instanser från .NET med docker.io/library/rabbitmq
containeravbildningen.
Värdintegrering
RabbitMQ modellerar en RabbitMQ-server som en RabbitMQServerResource-typ. Om du vill komma åt den här typen och dess API:er, lägg till 📦Aspire.Hosting.RabbitMQ NuGet-paketet i appens värdprojekt.
dotnet add package Aspire.Hosting.RabbitMQ
Mer information finns i dotnet add package eller Hantera paketberoenden i .NET applikationer.
Lägg till RabbitMQ serverresurs
I ditt appvärdprojekt anropar du AddRabbitMQ på builder
-instansen för att lägga till en RabbitMQ-serverresurs.
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging");
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
När .NET.NET Aspire lägger till en containerbild till applikationsvärden, som visas i föregående exempel med docker.io/library/rabbitmq
-bilden, skapas en ny RabbitMQ-serverinstans på din lokala dator. En referens till RabbitMQ-servern (variabeln rabbitmq
) läggs till i ExampleProject
.
RabbitMQ-serverresursen innehåller standardautentiseringsuppgifter med en username
av "guest"
och slumpmässigt genererade password
med hjälp av metoden CreateDefaultPasswordParameter.
Metoden WithReference konfigurerar en anslutning i ExampleProject
med namnet "messaging"
. Mer information finns i Livscykel för containerresurser.
Tips
Om du hellre vill ansluta till en befintlig RabbitMQ server anropar du AddConnectionString i stället. Mer information finns i Referera till befintliga resurser.
Lägg till RabbitMQ serverresurs med hanteringsplugin
Om du vill lägga till plugin-programmet för RabbitMQ hantering till RabbitMQ-serverresursen anropar du metoden WithManagementPlugin:
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging")
.WithManagementPlugin();
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
Plugin-programmet för RabbitMQ-hantering tillhandahåller ett HTTP-baserat API för hantering och övervakning av din RabbitMQ-server.
.NET
.NET Aspire lägger till en annan containeravbildning docker.io/library/rabbitmq-management
till appvärden som kör plugin-programmet för hantering.
Lägga till RabbitMQ serverresurs med datavolym
Om du vill lägga till en datavolym i RabbitMQ-serverresursen anropar du metoden WithDataVolume på RabbitMQ serverresursen:
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...
Datavolymen används för att bevara RabbitMQ serverdata utanför containerns livscykel. Datavolymen monteras på sökvägen /var/lib/rabbitmq
i RabbitMQ-servercontainern, och när parametern name
inte anges, genereras namnet slumpmässigt. Mer information om datavolymer och varför de föredras framför bindmonteringarfinns i dokumentationen för Docker: Volymer.
Lägg till RabbitMQ serverresurs med databindningsmontering
Om du vill lägga till en databindningsmontering till RabbitMQ-serverresursen anropar du metoden WithDataBindMount:
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...
Viktig
Data bind-mounts har begränsad funktionalitet jämfört med volymer, som erbjuder bättre prestanda, portabilitet och säkerhet, vilket gör dem mer lämpliga för produktionsmiljöer. Bindningsmonteringar tillåter dock direkt åtkomst och ändring av filer i värdsystemet, perfekt för utveckling och testning där realtidsändringar behövs.
Databindmonteringar förlitar sig på värddatorns filsystem för att bevara RabbitMQ serverdata vid omstart av containrar. Databindningsmonteringen monteras på sökvägen C:\RabbitMQ\Data
i Windows (eller /RabbitMQ/Data
på Unix) på värddatorn i RabbitMQ-servercontainern. Mer information om databindningsmonter finns i Docker dokumentation: bindmonteringar.
Lägga till RabbitMQ serverresurs med parametrar
När du uttryckligen vill ange användarnamnet och lösenordet som används av containeravbildningen kan du ange dessa autentiseringsuppgifter som parametrar. Tänk dig följande alternativa exempel:
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...
Mer information om hur du tillhandahåller parametrar finns i Externa parametrar.
Hälsokontroller för hostingintegrering
RabbitMQ värdintegrering lägger automatiskt till en hälsokontroll för RabbitMQ serverresursen. Hälsokontrollen verifierar att RabbitMQ-servern körs och att en anslutning kan upprättas till den.
Värdintegrationen förlitar sig på 📦 AspNetCore.HealthChecks.Rabbitmq NuGet-paketet.
Client integration
Kom igång med .NET AspireRabbitMQ-klientintegrering genom att installera 📦Aspire.RabbitMQ.Client NuGet-paket i det klientkrävande projektet, d.v.s. projektet för programmet som använder RabbitMQ-klienten. RabbitMQ-klientintegrering registrerar en IConnection- instans som du kan använda för att interagera med RabbitMQ.
dotnet add package Aspire.RabbitMQ.Client
Viktig
NuGet-paketet Aspire.RabbitMQ.Client
beror på RabbitMQ.Client
NuGet-paketet. Med lanseringen av version 7.0.0 av RabbitMQ.Client
introducerades en ändring som bryter binär kompatibilitet. För att åtgärda detta skapades ett nytt klientintegreringspaket, Aspire.RabbitMQ.Client.v7
. Det ursprungliga Aspire.RabbitMQ.Client
-paketet fortsätter att referera till RabbitMQ.Client
version 6.8.1, vilket säkerställer kompatibilitet med tidigare versioner av RabbitMQ-klientintegrering. Det nya Aspire.RabbitMQ.Client.v7
-paketet refererar till RabbitMQ.Client
version 7.0.0. I en framtida version av .NET.NET Aspireuppdateras Aspire.RabbitMQ.Client
till version 7.x
och Aspire.RabbitMQ.Client.v7
-paketet kommer att bli inaktuellt. För mer information, se Migrera till RabbitMQ.NETClient 7.x.
Lägg till RabbitMQ klient
I den Program.cs-filen för ditt klientkonsumerande projekt anropar du AddRabbitMQClient-tilläggsmetoden på vilken som helst IHostApplicationBuilder för att registrera en IConnection
för användning via beroendeinjektionscontainern. Metoden tar en parameter för anslutningsnamn.
builder.AddRabbitMQClient(connectionName: "messaging");
Tips
Parametern connectionName
måste matcha namnet som används när du lägger till RabbitMQ-serverresursen i appvärdprojektet. För mer information, se Lägg till RabbitMQ serverresurs.
Du kan sedan hämta IConnection
-instansen med hjälp av beroendeinjektion. Om du till exempel vill hämta anslutningen från en exempeltjänst:
public class ExampleService(IConnection connection)
{
// Use connection...
}
Mer information om beroendeinmatning finns i .NET beroendeinmatning.
Lägg till klient med nyckel RabbitMQ
Det kan finnas situationer där du vill registrera flera IConnection
instanser med olika anslutningsnamn. Om du vill registrera nyckelade RabbitMQ klienter anropar du metoden AddKeyedRabbitMQClient:
builder.AddKeyedRabbitMQClient(name: "chat");
builder.AddKeyedRabbitMQClient(name: "queue");
Sedan kan du hämta IConnection
instanser med hjälp av beroendeinjektion. Om du till exempel vill hämta anslutningen från en exempeltjänst:
public class ExampleService(
[FromKeyedServices("chat")] IConnection chatConnection,
[FromKeyedServices("queue")] IConnection queueConnection)
{
// Use connections...
}
Mer information om nyckelade tjänster finns i .NET beroendeinjektion: Nyckelade tjänster.
Konfiguration
Den .NET AspireRabbitMQ integreringen innehåller flera alternativ för att konfigurera anslutningen baserat på kraven och konventionerna i ditt projekt.
Använda en anslutningssträng
När du använder en anslutningssträng från ConnectionStrings
-konfigurationsavsnittet kan du ange namnet på anslutningssträngen när du anropar metoden AddRabbitMQClient:
builder.AddRabbitMQClient(connectionName: "messaging");
Sedan hämtas anslutningssträngen från ConnectionStrings
-konfigurationsavsnittet:
{
"ConnectionStrings": {
"messaging": "amqp://username:password@localhost:5672"
}
}
Mer information om hur du formaterar den här anslutningssträngen finns i RabbitMQ URI-specifikationsdokumenten.
Använda konfigurationsprovidrar
.NET Aspire
RabbitMQ-integreringen stödjer Microsoft.Extensions.Configuration. Den läser in RabbitMQClientSettings från konfigurationen med hjälp av nyckeln Aspire:RabbitMQ:Client
. Följande kodfragment är ett exempel på en appsettings.json fil som konfigurerar några av alternativen:
{
"Aspire": {
"RabbitMQ": {
"Client": {
"ConnectionString": "amqp://username:password@localhost:5672",
"DisableHealthChecks": true,
"DisableTracing": true,
"MaxConnectRetryCount": 2
}
}
}
}
Det fullständiga RabbitMQ klientintegreringsschemat JSON finns i Aspire.RabbitMQ.Client/ConfigurationSchema.json.
Använd inline-delegater
Du kan också delegera Action<RabbitMQClientSettings> configureSettings
för att konfigurera vissa eller alla alternativ direkt i koden, till exempel för att inaktivera hälsokontroller.
builder.AddRabbitMQClient(
"messaging",
static settings => settings.DisableHealthChecks = true);
Du kan också konfigurera IConnectionFactory- med den delegerade parametern Action<IConnectionFactory> configureConnectionFactory
i metoden AddRabbitMQClient
. Om du till exempel vill ange klientens angivna namn för anslutningar:
builder.AddRabbitMQClient(
"messaging",
configureConnectionFactory:
static factory => factory.ClientProvidedName = "MyApp");
Client hälsokontroller för integrering
Som standard aktiverar .NET.NET Aspire integreringar hälsokontroller för alla tjänster. Mer information finns i översikten över .NET.NET Aspire integreringar.
Integreringen .NET AspireRabbitMQ:
- Lägger till hälsokontrollen när RabbitMQClientSettings.DisableHealthChecks är
false
, som försöker ansluta till och skapa en kanal på RabbitMQ-servern. - Integreras med HTTP-slutpunkten
/health
, som anger att alla registrerade hälsokontroller måste klaras för att appen ska anses vara redo att acceptera trafik.
Observerbarhet och telemetri
.NET .NET Aspire integreringar konfigurerar automatiskt konfigurationer för loggning, spårning och mått, som ibland kallas grundpelarna för observerbarhet. Mer information om integreringsobservabilitet och telemetri finns i översikten över .NET.NET Aspire integreringar. Beroende på säkerhetskopieringstjänsten kanske vissa integreringar bara stöder vissa av dessa funktioner. Vissa integreringar stöder till exempel loggning och spårning, men inte mått. Telemetrifunktioner kan också inaktiveras med hjälp av de tekniker som visas i avsnittet Configuration.
Skogsavverkning
.NET Aspire RabbitMQ-integreringen använder följande loggkategorier:
RabbitMQ.Client
Spårning
.NET Aspire RabbitMQ-integreringen genererar följande spårningsaktiviteter med hjälp av OpenTelemetry:
Aspire.RabbitMQ.Client
Mått
Den .NET AspireRabbitMQ integreringen stöder för närvarande inte mått som standard.
Se även
.NET Aspire