Sdílet prostřednictvím


Integrace s .NET AspireaRabbitMQ

zahrnuje:integraci hostování a Client integraci

RabbitMQ je spolehlivý zprostředkovatel zasílání zpráv a streamování, který se snadno nasazuje v cloudových prostředích, místně a na místním počítači. Integrace umožňuje připojit se k existujícím instancím nebo vytvářet nové instance z pomocíimage kontejneru .

Integrace hostování

RabbitMQ hostování integračních modelů RabbitMQserver jako typ RabbitMQServerResource. Pro přístup k tomuto typu a jeho rozhraním API přidejte balíček NuGet 📦Aspire.Hosting.RabbitMQ do projektu hostitele aplikace .

dotnet add package Aspire.Hosting.RabbitMQ

Další informace najdete v tématu dotnet add package nebo Manage package dependencies in .NET applications.

Přidejte prostředek RabbitMQserver

V projektu hostitele aplikace zavolejte AddRabbitMQ na instanci builder a přidejte RabbitMQserver prostředek:

var builder = DistributedApplication.CreateBuilder(args);

var rabbitmq = builder.AddRabbitMQ("messaging");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(rabbitmq);

// After adding all resources, run the app...

Když .NET.NET Aspire přidá do hostitele aplikace image kontejneru, jak je znázorněno v předchozím příkladu s imagí docker.io/library/rabbitmq, vytvoří na místním počítači novou instanci RabbitMQserver. Do ExampleProjectse přidá odkaz na RabbitMQserver (na proměnnou rabbitmq). Prostředek RabbitMQserver zahrnuje výchozí přihlašovací údaje s username"guest" a náhodně vygenerovanými password pomocí metody CreateDefaultPasswordParameter.

Metoda WithReference nakonfiguruje připojení v ExampleProject s názvem "messaging". Pro více informací viz životní cyklus kontejnerových prostředků.

Spropitné

Pokud byste se raději připojili k existujícímu RabbitMQserver, volejte místo toho AddConnectionString. Další informace naleznete v tématu Odkaz na existující prostředky.

Přidání RabbitMQserver prostředku pomocí modulu plug-in pro správu

Pokud chcete ke zdroji RabbitMQserver přidat modul plug-in RabbitMQ pro správu, použijte metodu 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...

Plug-in pro správu RabbitMQ poskytuje rozhraní API založené na protokolu HTTP ke správě a monitorování RabbitMQserver. .NET .NET Aspire přidá další image kontejneru docker.io/library/rabbitmq-management do hostitele aplikace, na kterém běží správní plugin.

Přidání RabbitMQserver prostředku s datovým svazkem

Pokud chcete do prostředku RabbitMQserver přidat datový svazek, zavolejte metodu WithDataVolume prostředku RabbitMQserver:

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...

Objem dat se používá k zachování RabbitMQserver dat mimo životní cyklus kontejneru. Datový svazek se připojí k cestě /var/lib/rabbitmq v kontejneru RabbitMQserver a pokud není zadaný parametr name, název se náhodně vygeneruje. Další informace o datových svazcích a o tom, proč jsou preferovány před připojením pomocí vazby , naleznete v dokumentaci Docker: Datové svazky.

Přidejte prostředek RabbitMQserver s připojením datového úložiště

Pokud chcete přidat datovou vazbu k prostředku RabbitMQserver, zavolejte metodu 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...

Důležitý

Připojení vazby dat mají v porovnání s svazkyomezené funkce, které nabízejí lepší výkon, přenositelnost a zabezpečení, což je vhodnější pro produkční prostředí. Připojení typu bind mounts však umožňují přímý přístup a úpravy souborů v hostitelském systému, což je ideální pro vývoj a testování, kde jsou potřebné změny v reálném čase.

Připojení vazby dat využívají systém souborů hostitelského počítače k zachování RabbitMQserver dat napříč restartováními kontejneru. Vazba dat je namontována na cestu C:\RabbitMQ\Data ve Windows (nebo /RabbitMQ/Data na Unix) na hostitelském počítači v kontejneru RabbitMQserver. Další informace o připojeních datových vazeb najdete v dokumentaci Docker: Připojení vazby.

Přidejte prostředek RabbitMQserver s parametry

Pokud chcete explicitně zadat uživatelské jméno a heslo používané imagí kontejneru, můžete tyto přihlašovací údaje zadat jako parametry. Podívejte se na následující alternativní příklad:

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...

Další informace o poskytování parametrů naleznete v tématu Externí parametry.

Hostování kontrol stavu integrace

Integrace hostování RabbitMQ automaticky přidá kontrolu stavu prostředku RabbitMQserver. Kontrola stavu ověřuje, že RabbitMQaserver jsou spuštěné a že se k nim dá navázat připojení.

Integrace hostování spoléhá na 📦 AspNetCore.HealthChecks.Rabbitmq balíček NuGet.

Client integrace

Pokud chcete začít s integrací .NET AspireRabbitMQclient, nainstalujte balíček NuGet 📦Aspire.RabbitMQ.Client v projektu, který využívá client, tj. v projektu aplikace, jež používá RabbitMQclient. Integrace zaregistruje instanci IConnection, kterou můžete použít k interakci s .

dotnet add package Aspire.RabbitMQ.Client

Přidejte RabbitMQclient

V souboru Program.cs projektu, který využívá client, zavolejte metodu rozšíření AddRabbitMQClient na libovolném IHostApplicationBuilder a zaregistrujte IConnection pro použití prostřednictvím kontejneru injektáže závislostí. Metoda přebírá parametr názvu připojení.

builder.AddRabbitMQClient(connectionName: "messaging");

Spropitné

Parametr connectionName se musí shodovat s názvem použitým při přidávání prostředku RabbitMQserver do hostitelského projektu aplikace. Další informace naleznete v části Přidat RabbitMQserver zdroj.

Potom můžete načíst instanci IConnection pomocí vkládání závislostí. Například chcete-li získat připojení z příkladové služby:

public class ExampleService(IConnection connection)
{
    // Use connection...
}

Další informace o injektáži závislostí najdete v tématu .NET injektáž závislostí.

Přidat klíčované RabbitMQclient

Mohou nastat situace, kdy budete chtít zaregistrovat více instancí IConnection s různými názvy připojení. Pokud chcete zaregistrovat klíčované klienty RabbitMQ, zavolejte metodu AddKeyedRabbitMQClient:

builder.AddKeyedRabbitMQClient(name: "chat");
builder.AddKeyedRabbitMQClient(name: "queue");

Potom můžete načíst IConnection instance pomocí injektáže závislostí. Například pro načtení připojení z příkladové služby:

public class ExampleService(
    [FromKeyedServices("chat")] IConnection chatConnection,
    [FromKeyedServices("queue")] IConnection queueConnection)
{
    // Use connections...
}

Další informace o klíčových službách najdete v tématu .NET injektáž závislostí: Služby s klíči.

Konfigurace

Integrace .NET AspireRabbitMQ poskytuje několik možností konfigurace připojení na základě požadavků a konvencí projektu.

Použijte připojovací řetězec

Při použití připojovacího řetězce z oddílu konfigurace ConnectionStrings můžete při volání metody AddRabbitMQClient zadat název připojovacího řetězce:

builder.AddRabbitMQClient(connectionName: "messaging");

Poté se načte řetězec připojení z oddílu konfigurace ConnectionStrings.

{
  "ConnectionStrings": {
    "messaging": "amqp://username:password@localhost:5672"
  }
}

Další informace o tom, jak formátovat tento připojovací řetězec, najdete v dokumentaci ke specifikaci URI RabbitMQ.

Použití zprostředkovatelů konfigurace

Integrace .NET AspireRabbitMQ podporuje Microsoft.Extensions.Configuration. Načte RabbitMQClientSettings z konfigurace pomocí klíče Aspire:RabbitMQ:Client. Následující fragment kódu je příkladem souboru appsettings.json, který konfiguruje některé z možností:

{
  "Aspire": {
    "RabbitMQ": {
      "Client": {
        "ConnectionString": "amqp://username:password@localhost:5672",
        "DisableHealthChecks": true,
        "DisableTracing": true,
        "MaxConnectRetryCount": 2
      }
    }
  }
}

Kompletní integraci schématu RabbitMQclientJSON najdete v dokumentu Aspire.RabbitMQ.Client/ConfigurationSchema.json.

Použití vložených delegátů

Můžete také předat delegáta Action<RabbitMQClientSettings> configureSettings a nastavit některé nebo všechny možnosti přímo, například zakázat v kódu kontroly stavu.

builder.AddRabbitMQClient(
    "messaging",
    static settings => settings.DisableHealthChecks = true);

Můžete také nastavit IConnectionFactory pomocí parametru Action<IConnectionFactory> configureConnectionFactory delegáta metody AddRabbitMQClient. Například chcete-li nastavit zadaný název client pro připojení:

builder.AddRabbitMQClient(
    "messaging",
    configureConnectionFactory:
        static factory => factory.ClientProvidedName = "MyApp");

Client testy stavu integrace

Ve výchozím nastavení integrace .NET.NET Aspire umožňují kontroly stavu pro všechny služby. Další informace naleznete v přehledu integrací .NET.NET Aspire.

Integrace .NET AspireRabbitMQ:

  • Přidává kontrolu zdraví, když je RabbitMQClientSettings.DisableHealthChecksfalse, která se pokusí připojit a vytvořit kanál na RabbitMQserver.
  • Integruje se s HTTP koncovým bodem /health, který udává, že všechny registrované kontroly stavu musí být úspěšně splněny, aby byla aplikace považována za připravenou přijímat provoz.

Pozorovatelnost a telemetrie

.NET .NET Aspire integrace automaticky nastaví konfigurace protokolování, trasování a metrik, které se někdy označují jako pilíře pozorovatelnosti. Další informace o pozorovatelnosti a telemetrii integrace najdete v přehledu integrace .NET.NET Aspire. V závislosti na backingové službě můžou některé integrace podporovat jenom některé z těchto funkcí. Například některé integrace podporují protokolování a trasování, ale ne metriky. Funkce telemetrie je také možné zakázat pomocí technik uvedených v části Konfigurace.

Protokolování

Integrace .NET AspireRabbitMQ používá následující kategorie protokolů:

  • RabbitMQ.Client

Trasování

Integrace .NET AspireRabbitMQ generuje následující aktivity trasování pomocí OpenTelemetry:

  • Aspire.RabbitMQ.Client

Metriky

Integrace .NET AspireRabbitMQ aktuálně nepodporuje metriky ve výchozím nastavení.

Viz také