Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              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 AspireRabbitMQ kan du ansluta till befintliga RabbitMQ instanser eller skapa nya instanser från .NET med containeravbildningendocker.io/library/rabbitmq.
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ägger du till 📦Aspire. Gästfrihet.RabbitMQ NuGet-paket i AppHost-projektet .
dotnet add package Aspire.Hosting.RabbitMQ
Mer information finns i dotnet add package eller Hantera paketberoenden i .NET program.
Lägg till RabbitMQ serverresurs
I Ditt AppHost-projekt anropar du AddRabbitMQ instansen builder 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 Aspire lägger till en containeravbildning i AppHost, som visas i föregående exempel med docker.io/library/rabbitmq-avbildningen, 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ä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 information om varför de föredras framför bindningsmonteringar finns i Docker dokument: Volymer.
Lägg till RabbitMQ serverresurs med databindning
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
Databindningsmonteringar har begränsade funktioner jämfört med volymer, vilket ger 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 databindningsmonteringar finns i Docker dokument: Bindningsmonteringar.
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.
Lägg till RabbitMQ serverresurs med hanteringsplugin
Om du vill lägga till RabbitMQ plugin-programmet för hantering i serverresursen RabbitMQ anropar du WithManagementPlugin metoden. Kom ihåg att använda parametrar för att ange autentiseringsuppgifterna för containern. Du behöver dessa autentiseringsuppgifter för att logga in på plugin-programmet för hantering:
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)
                      .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. 
              Aspire lägger till en annan containeravbildning docker.io/library/rabbitmq-management till AppHost som kör pluginet för hantering. Du kan komma åt plugin-programmet för hantering från Aspire instrumentpanelen genom att välja en slutpunkt för din RabbitMQ resurs:
              
               
              
              
            
Logga in på plugin-programmet för hantering med de autentiseringsuppgifter som du har konfigurerat med parametrar:
              
               
              
              
            
Mer information finns i Livslängd för containerresurser.
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ärdintegreringen förlitar sig på den 📦 NuGet-paketet AspNetCore.HealthChecks.Rabbitmq.
Client integration
Kom igång med klientintegrering AspireRabbitMQ genom att 📦Aspireinstallera .RabbitMQ.Client NuGet-paketet i det klientkrävande projektet, dvs. projektet för det program som använder RabbitMQ klienten. Klientintegrering RabbitMQ 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.Clientintroducerades 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 AspireAspire.RabbitMQ.Client kommer den att uppdateras till version 7.x och Aspire.RabbitMQ.Client.v7 paketet kommer att bli inaktuellt. Mer information finns i 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 serverresursen RabbitMQ i AppHost-projektet. Mer information finns i 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 beroendeinmatning: Nyckelade tjänster.
Konfiguration
Den 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 URI-specifikationsdokumentenRabbitMQ.
Använda konfigurationsprovidrar
              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ända namngiven konfiguration
Integreringen AspireRabbitMQ stöder namngiven konfiguration, vilket gör att du kan konfigurera flera instanser av samma resurstyp med olika inställningar. Den namngivna konfigurationen använder anslutningsnamnet som en nyckel under huvudkonfigurationsavsnittet.
{
  "Aspire": {
    "RabbitMQ": {
      "Client": {
        "rabbit1": {
          "ConnectionString": "amqp://username:password@rabbit1:5672",
          "DisableHealthChecks": true,
          "MaxConnectRetryCount": 2
        },
        "rabbit2": {
          "ConnectionString": "amqp://username:password@rabbit2:5672",
          "DisableTracing": true,
          "MaxConnectRetryCount": 5
        }
      }
    }
  }
}
I det här exemplet kan anslutningsnamnen rabbit1 och rabbit2 användas när du anropar AddRabbitMQClient:
builder.AddRabbitMQClient("rabbit1");
builder.AddRabbitMQClient("rabbit2");
Den namngivna konfigurationen har företräde framför konfigurationen på den översta nivån. Om båda anges åsidosätter inställningarna från den namngivna konfigurationen inställningarna på den översta nivån.
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 genom att använda metodens Action<IConnectionFactory> configureConnectionFactory-ombudsparameter 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
Integreringar aktiverar som standard Aspirehälsokontroller för alla tjänster. Mer information finns i Aspire översikten över integreringar.
Integreringen 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
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 Aspire översikten över 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 Konfiguration .
Skogsavverkning
Aspire RabbitMQ-integreringen använder följande loggkategorier:
- RabbitMQ.Client
Spårning
Aspire RabbitMQ-integreringen genererar följande spårningsaktiviteter med hjälp av OpenTelemetry:
- Aspire.RabbitMQ.Client
Mått
Den AspireRabbitMQ integreringen stöder för närvarande inte mått som standard.