Sdílet prostřednictvím


Integrace .NET AspireRabbitMQ

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 hostování 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 RabbitMQse přidá odkaz na váš rabbitmq server (proměnná ExampleProject). Prostředek serveru RabbitMQ zahrnuje 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

Pro přidání pluginu 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řidejte serverový prostředek RabbitMQ s datovým objemem

Pro přidání datového svazku k prostředku serveru RabbitMQ zavolejte metodu WithDataVolume prostřednictvím 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

Chcete-li přidat databind mount na prostředek 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í datových svazků má omezenou funkčnost ve srovnání s svazky, které nabízejí lepší výkon, přenositelnost a zabezpečení, což je činí vhodnějšími 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é bind mounty spoléhají na systém souborů hostitelského počítače pro zachování dat serveru RabbitMQ při restartu 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řidejte prostředek 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

Důležitý

Balíček NuGet Aspire.RabbitMQ.Client závisí na RabbitMQ.Client balíčku NuGet. S vydáním verze 7.0.0 RabbitMQ.Clientbyla zavedena binární zásadní změna. Pro vyřešení tohoto řešení byl vytvořen nový integrační balíček klienta Aspire.RabbitMQ.Client.v7. Původní balíček Aspire.RabbitMQ.Client nadále odkazuje na RabbitMQ.Client verze 6.8.1 a zajišťuje kompatibilitu s předchozími verzemi integrace klienta RabbitMQ. Nový balíček Aspire.RabbitMQ.Client.v7 odkazuje na verzi RabbitMQ.Client 7.0.0. V budoucí verzi .NET.NET Aspirese Aspire.RabbitMQ.Client aktualizuje na verzi 7.x a balíček Aspire.RabbitMQ.Client.v7 bude zastaralý. Další informace naleznete v tématu Migrace na RabbitMQ.NETClient 7.x.

Přidejte klienta RabbitMQ

V souboru Program.cs ve vašem projektu využívajícím klienta použijte metodu rozšíření AddRabbitMQClient na libovolném IHostApplicationBuilder, čímž zaregistrujete IConnection, aby byl použit prostřednictvím kontejneru pro injektáž 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 naleznete v části Přidat prostředek 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řidejte klienta RabbitMQ s klíčem

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 řetězec připojení načte z konfigurační části 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
      }
    }
  }
}

Pro kompletní schéma integrace klienta RabbitMQJSON viz 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, což se pokusí 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é