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