Dela via


.NET Aspire RabbitMQ integrering

omfattar:Som värd för integrering och Client integration

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 som är värd för integrering modellerar en RabbitMQserver som RabbitMQServerResource typ. Om du vill komma åt den här typen och dess API:er, lägg till 📦Aspire.Hosting.RabbitMQ NuGet-paketet i appvärdprojektet.

dotnet add package Aspire.Hosting.RabbitMQ

Mer information finns i dotnet add package eller Hantera paketberoenden i .NET applikationer.

Lägg till RabbitMQserver resurs

I appvärdprojektet anropar du AddRabbitMQbuilder-instansen för att lägga till en RabbitMQserver resurs:

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 containeravbildning till appvärden, som du ser i föregående exempel med docker.io/library/rabbitmq avbildningen, skapas en ny RabbitMQserver instans på den lokala datorn. En referens till din RabbitMQserver (variabeln rabbitmq) läggs till i ExampleProject. Resursen RabbitMQserver innehåller standardautentiseringsuppgifter med ett 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 RabbitMQserveranropar du AddConnectionString i stället. Mer information finns i Referera till befintliga resurser.

Lägg till RabbitMQserver resurs med hanteringsplugin

Om du vill lägga till plugin-programmet för RabbitMQ hantering till resursen RabbitMQserver 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 innehåller ett HTTP-baserat API för hantering och övervakning av din RabbitMQserver. .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 RabbitMQserver resurs med datavolym

Om du vill lägga till en datavolym i den RabbitMQserver resursen anropar du metoden WithDataVolume på den RabbitMQserver resursen:

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 RabbitMQserver data utanför containerns livscykel. Datavolymen monteras på den /var/lib/rabbitmq sökvägen i RabbitMQserver-containern och när en name parameter 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 RabbitMQserver resurs med databind-montering

Om du vill lägga till en databindningsmontering till den RabbitMQserver resursen 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 bindningsmonteringar 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.

Databindningsmonteringar förlitar sig på värddatorns filsystem för att bevara RabbitMQserver data mellan omstarter av containrar. Databind-monteringen monteras vid sökvägen C:\RabbitMQ\Data i Windows (eller /RabbitMQ/Data på Unix) på värddatorn i RabbitMQserver-containern. Mer information om databindningsmonter finns i Docker dokumentation: bindmonteringar.

Lägga till RabbitMQserver resurs 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 den RabbitMQserver resursen. Hälsokontrollen verifierar att RabbitMQserver körs och att en anslutning kan etableras till den.

Värdintegreringen är beroende av 📦 AspNetCore.HealthChecks.Rabbitmq NuGet paketet.

Client integrering

Kom igång med .NET AspireRabbitMQclient-integreringen genom att installera 📦Aspire.RabbitMQ.Client NuGet-paket i det client-förbrukande projektet, dvs. projektet för programmet som använder RabbitMQclient. RabbitMQ client-integreringen registrerar en IConnection- instans som du kan använda för att interagera med RabbitMQ.

dotnet add package Aspire.RabbitMQ.Client

Lägg till RabbitMQclient

I den Program.cs filen för ditt client-förbrukande projekt anropar du tilläggsmetoden AddRabbitMQClient på alla 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 RabbitMQserver-resurs i appens värdprojekt. Mer information finns i Lägg till RabbitMQserver resurs.

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 kodade RabbitMQclient

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 RabbitMQclient integrationsschemat JSON finns i Aspire.RabbitMQ.Client/ConfigurationSchema.json.

Använda infogade ombud

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. För att till exempel ange det tilldelade namnet client 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, genom att försöka ansluta till och skapa en kanal på RabbitMQserver.
  • Integrerar med /health HTTP-slutpunkt, som anger att alla registrerade hälsokontroller måste godkännas 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