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í
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 .
- .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ř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 ExampleProject
se 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
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.DisableHealthChecks
false
, 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í.