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
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 .
- .NET rozhraní příkazového řádku
- PackageReference
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 ExampleProject
se 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.
- .NET rozhraní příkazového řádku
- PackageReference
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.DisableHealthChecks
false
, 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í.