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í

Integrační modely hostování RabbitMQ modelují server RabbitMQ 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řidání prostředku serveru RabbitMQ

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

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 serveru RabbitMQ. Do ExampleProjectse přidá odkaz na váš RabbitMQ server (proměnná rabbitmq). Prostředek serveru RabbitMQ obsahuje výchozí přihlašovací údaje s username"guest" a náhodně vygenerované 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 serveru RabbitMQ, volejte místo toho AddConnectionString. Další informace naleznete v tématu Odkaz na existující prostředky.

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

Pokud chcete přidat modul plug-in pro správu RabbitMQ k prostředku serveru RabbitMQ, zavolejte 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...

Modul plug-in pro správu RabbitMQ poskytuje rozhraní API založené na protokolu HTTP pro správu a monitorování vašeho RabbitMQ serveru. .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í serverového prostředku RabbitMQ s datovým objemem

Pro přidání datového svazku k prostředku serveru RabbitMQ zavolejte metodu WithDataVolume na prostředku serveru RabbitMQ.

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

Datový svazek slouží k zachování dat serveru RabbitMQ mimo životní cyklus kontejneru. Datový svazek se připojí k cestě /var/lib/rabbitmq v kontejneru serveru RabbitMQ 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 serveru RabbitMQ s datovým bind mountem

Pokud chcete přidat připojení datové vazby k prostředku serveru RabbitMQ, 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.

Datová úložiště spoléhají na systém souborů hostitelského počítače k zachování dat serveru RabbitMQ při restartování kontejneru. Datový připojovací bod je připojen na cestu C:\RabbitMQ\Data v systému Windows (nebo /RabbitMQ/Data na Unix) na hostitelském počítači v serverovém kontejneru RabbitMQ. Další informace o připojeních datových vazeb najdete v dokumentaci Docker: Připojení vazby.

Přidání prostředku serveru RabbitMQ 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 pro prostředek serveru RabbitMQ. Kontrola stavu ověřuje, jestli je server RabbitMQ spuštěný a že se k němu dá navázat připojení.

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

Client integrace

Pokud chcete začít s integrací klienta .NET AspireRabbitMQ, nainstalujte 📦Aspire.RabbitMQ.Client balíček NuGet v projektu, který využívá klienta, to znamená projekt aplikace, která používá klienta RabbitMQ. Integrace klienta RabbitMQ registruje instanci IConnection, kterou můžete použít k interakci s RabbitMQ.

dotnet add package Aspire.RabbitMQ.Client

Přidejte klienta RabbitMQ

V souboru Program.cs projektu využívajícího klienta zavolejte metodu rozšíření AddRabbitMQClient na libovolném IHostApplicationBuilder a zaregistrujte IConnection pro použití prostřednictvím kontejneru pro vkládání 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 serveru RabbitMQ v projektu hostitele aplikace. Další informace najdete v tématu Přidání prostředku serveru RabbitMQ.

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řidání klienta RabbitMQ s klíči

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 chcete-li získat 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í schéma integrace klienta RabbitMQJSON naleznete v tématu 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. Pokud chcete například nastavit zadaný název klienta 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á zdravotní kontrolu, když je RabbitMQClientSettings.DisableHealthChecksfalse, pokusí se připojit k serveru RabbitMQ a vytvořit kanál.
  • 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é