.NET Aspire RabbitMQ integráció
Tartalmazza: Üzemeltetési integráció és
Client integráció
RabbitMQ egy megbízható üzenetkezelési és streamközvetítő, amely könnyen üzembe helyezhető felhőkörnyezetekben, a helyszínen és a helyi gépen. A .NET AspireRabbitMQ integráció lehetővé teszi, hogy csatlakozzon a meglévő RabbitMQ példányokhoz, vagy a .NETsegítségével új példányokat hozzon létre docker.io/library/rabbitmq
-on.
Üzemeltetési integráció
A RabbitMQ integráció egy RabbitMQ szervert RabbitMQServerResource típusként modellez. A típus és az API-k eléréséhez adja hozzá a 📦Aspire.Hosting.RabbitMQ NuGet-csomagot az alkalmazásgazda projekthez.
dotnet add package Aspire.Hosting.RabbitMQ
További információ: dotnet add package vagy Csomagfüggőségek kezelése .NET alkalmazásokban.
RabbitMQ erőforrás hozzáadása a kiszolgálóhoz
Az alkalmazásgazdaprojektben hívja meg AddRabbitMQ a builder
-példányon egy RabbitMQ kiszolgálóerőforrás hozzáadásához:
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging");
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
Amikor .NET.NET Aspire egy tárolóképet ad hozzá az alkalmazás gazdagépéhez, ahogyan az a docker.io/library/rabbitmq
tárolókép előző példájában is látható, létrehoz egy új RabbitMQ szerver-példányt a helyi gépen. A RabbitMQ kiszolgálóra (a rabbitmq
változóra) mutató hivatkozást adunk hozzá a ExampleProject
-höz. A RabbitMQ kiszolgálóerőforrás alapértelmezett hitelesítő adatokat tartalmaz, username
"guest"
és véletlenszerűen generált password
a CreateDefaultPasswordParameter metódus használatával.
A WithReference metódus egy kapcsolatot konfigurál a ExampleProject
-ben, amelynek neve "messaging"
. További információ: Tárolóerőforrás-életciklus.
Borravaló
Ha inkább egy meglévő RabbitMQ kiszolgálóhoz szeretne csatlakozni, hívja meg inkább a AddConnectionString. További információkért lásd Meglévő erőforrások hivatkozása.
RabbitMQ szerver erőforrás hozzáadása felügyeleti bővítménnyel
A RabbitMQ felügyeleti beépülő modulRabbitMQ kiszolgálói erőforráshoz való hozzáadásához hívja meg a WithManagementPlugin metódust:
var builder = DistributedApplication.CreateBuilder(args);
var rabbitmq = builder.AddRabbitMQ("messaging")
.WithManagementPlugin();
builder.AddProject<Projects.ExampleProject>()
.WithReference(rabbitmq);
// After adding all resources, run the app...
A RabbitMQ felügyeleti beépülő modul egy HTTP-alapú API-t biztosít a RabbitMQ-kiszolgáló felügyeletéhez és monitorozásához. .NET .NET Aspire hozzáad egy másik konténerképet a felügyeleti beépülő modult futtató alkalmazáshoz.
RabbitMQ kiszolgálói erőforrás hozzáadása adatkapacitással
Ha adatkötetet szeretne hozzáadni a RabbitMQ kiszolgálóerőforráshoz, hívja meg a WithDataVolume metódust a RabbitMQ kiszolgálóerőforráson:
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...
Az adatkötet a tároló életciklusán kívüli RabbitMQ kiszolgálóadatok megőrzésére szolgál. Az adatkötet a /var/lib/rabbitmq
kiszolgálótároló RabbitMQ elérési útjára van csatlakoztatva, és ha nincs megadva name
paraméter, a rendszer véletlenszerűen hozza létre a nevet. További információ az adatmennyiségekről és arról, hogy miért részesítik őket előnyben a bind mountokkal szemben, lásd a Docker dokumentációt: Volumes.
RabbitMQ kiszolgálói erőforrás hozzáadása adatkapcsolati csatolással
Ha adatkötési csatlakoztatást szeretne hozzáadni a RabbitMQ kiszolgálóerőforráshoz, hívja meg a WithDataBindMount metódust:
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...
Fontos
Az adatkötési csatlakoztatások korlátozott funkcionalitással rendelkeznek kötetekhez képest, amelyek jobb teljesítményt, hordozhatóságot és biztonságot nyújtanak, így jobban alkalmasak az éles környezetekhez. A kötési csatlakoztatások azonban lehetővé teszik a fájlok közvetlen elérését és módosítását a gazdarendszeren, ami ideális fejlesztési és tesztelési célokra, ahol valós idejű módosításokra van szükség.
Az adatkötés-csatlakoztatások a gazdagép fájlrendszerére támaszkodnak, hogy a tároló újraindítása során megőrizze a RabbitMQ kiszolgáló adatait. Az adatkötés csatlakoztatása a Windows C:\RabbitMQ\Data
(vagy /RabbitMQ/Data
Unix) gazdaszámítógépének RabbitMQ kiszolgálótárolójában található elérési útjára van csatlakoztatva. Az adatkötési csatlakoztatásokkal kapcsolatos további információkért lásd Docker dokumentumokat: Kötési csatlakoztatások.
RabbitMQ szerver erőforrás hozzáadása paraméterekkel
Ha explicit módon meg szeretné adni a tárolólemezkép által használt felhasználónevet és jelszót, paraméterekként megadhatja ezeket a hitelesítő adatokat. Tekintse meg a következő alternatív példát:
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...
További információ a paraméterek megadásáról: Külső paraméterek.
Integrációs állapotellenőrzések üzemeltetése
A RabbitMQ üzemeltetési integráció automatikusan hozzáad egy állapotellenőrzést a RabbitMQ kiszolgálói erőforráshoz. Az állapot-ellenőrzés ellenőrzi, hogy a RabbitMQ kiszolgáló fut-e, és hogy létre lehet-e hozni vele kapcsolatot.
Az üzemeltetési integráció az 📦 AspNetCore.HealthChecks.Rabbitmq NuGet-csomagra támaszkodik.
Client integráció
Az .NET AspireRabbitMQ ügyfélintegráció első lépéseihez telepítse a 📦Aspire.RabbitMQ.Client NuGet-csomagot az ügyfélfogyasztó projektben, vagyis a RabbitMQ ügyfelet használó alkalmazás projektjében. A RabbitMQ-ügyfélintegráció regisztrál egy IConnection-példányt, amelyet a(z) RabbitMQelemmel való interakcióhoz használhat.
dotnet add package Aspire.RabbitMQ.Client
Fontos
A Aspire.RabbitMQ.Client
NuGet-csomag az RabbitMQ.Client
NuGet-csomagtól függ. A RabbitMQ.Client
7.0.0-s verziójának kiadásával bináris kompatibilitástörő változás történt. Ennek megoldásához egy új, Aspire.RabbitMQ.Client.v7
nevű ügyfélintegrációs csomag jött létre. Az eredeti Aspire.RabbitMQ.Client
csomag továbbra is hivatkozik RabbitMQ.Client
6.8.1-es verziójára, biztosítva a kompatibilitást a RabbitMQ ügyfélintegráció korábbi verzióival. Az új Aspire.RabbitMQ.Client.v7
csomag RabbitMQ.Client
7.0.0-s verzióra hivatkozik. A .NET.NET Aspireegy későbbi verziójában a Aspire.RabbitMQ.Client
7.x
verzióra frissül, és a Aspire.RabbitMQ.Client.v7
csomag elavulttá válik. További információért lásd a Migrálás RabbitMQ.NETClient 7.x.
RabbitMQ-ügyfél hozzáadása
Az ügyfél által használt projekt Program.cs fájljában hívja meg a AddRabbitMQClient kiterjesztési metódust bármely IHostApplicationBuilder-n, hogy IConnection
-t regisztráljon a függőséginjektálási tárolóval történő használathoz. A metódus egy kapcsolatnévparamétert használ.
builder.AddRabbitMQClient(connectionName: "messaging");
Borravaló
A connectionName
paraméternek meg kell egyeznie a RabbitMQ kiszolgálói erőforrás alkalmazásgazdaprojektben való hozzáadásakor használt névvel. További információért lásd: A RabbitMQ kiszolgálói erőforrások hozzáadása.
Ezután függőséginjektálással lekérheti a IConnection
-példányt. Ha például egy példaszolgáltatásból szeretné lekérni a kapcsolatot:
public class ExampleService(IConnection connection)
{
// Use connection...
}
További információ a függőséginjektálásról: .NET függőséginjektálás.
Kulcsos RabbitMQ ügyfél hozzáadása
Előfordulhatnak olyan helyzetek, amikor több IConnection
példányt szeretne regisztrálni különböző kapcsolatnevekkel. A kulcsos RabbitMQ ügyfelek regisztrálásához hívja meg a AddKeyedRabbitMQClient metódust:
builder.AddKeyedRabbitMQClient(name: "chat");
builder.AddKeyedRabbitMQClient(name: "queue");
Ezután függőséginjektálással lekérheti a IConnection
példányokat. Ha például egy példaszolgáltatásból szeretné lekérni a kapcsolatot:
public class ExampleService(
[FromKeyedServices("chat")] IConnection chatConnection,
[FromKeyedServices("queue")] IConnection queueConnection)
{
// Use connections...
}
További információ a kulcsos szolgáltatásokról: .NET függőséginjektálás: Kulcsos szolgáltatások.
Konfiguráció
A .NET AspireRabbitMQ integráció több lehetőséget is kínál a kapcsolat konfigurálására a projekt követelményei és konvenciói alapján.
Kapcsolati karakterlánc használata
Ha a ConnectionStrings
konfigurációs szakaszból használ kapcsolati sztringet, megadhatja a kapcsolati sztring nevét a AddRabbitMQClient metódus meghívásakor:
builder.AddRabbitMQClient(connectionName: "messaging");
A kapcsolati sztringet ezután a ConnectionStrings
konfigurációs szakaszból nyerik ki.
{
"ConnectionStrings": {
"messaging": "amqp://username:password@localhost:5672"
}
}
További információért arról, hogyan lehet formázni ezt a kapcsolati karakterláncot, lásd a RabbitMQ URI specifikációs dokumentációkat.
Konfigurációs szolgáltatók használata
A .NET AspireRabbitMQ integráció támogatja a Microsoft.Extensions.Configuration. A RabbitMQClientSettings kulcs segítségével a konfigurációból betölti a Aspire:RabbitMQ:Client
-t. Az alábbi kódrészlet egy példa egy appsettings.json fájlra, amely konfigurál néhány beállítást:
{
"Aspire": {
"RabbitMQ": {
"Client": {
"ConnectionString": "amqp://username:password@localhost:5672",
"DisableHealthChecks": true,
"DisableTracing": true,
"MaxConnectRetryCount": 2
}
}
}
}
A teljes RabbitMQ ügyfél-integrációs JSON sémát lásd: Aspire.RabbitMQ.Client/ConfigurationSchema.json.
Beágyazott delegáltak használata
A Action<RabbitMQClientSettings> configureSettings
delegáltat is használhatja a beállítások közvetlen megadásához, például az állapotellenőrzés kódbeli letiltásához.
builder.AddRabbitMQClient(
"messaging",
static settings => settings.DisableHealthChecks = true);
Az IConnectionFactory beállítható a Action<IConnectionFactory> configureConnectionFactory
metódus AddRabbitMQClient
delegált paraméterével is. Például a kapcsolatok ügyfél által megadott nevének beállításához:
builder.AddRabbitMQClient(
"messaging",
configureConnectionFactory:
static factory => factory.ClientProvidedName = "MyApp");
Client integrációs egészségügyi ellenőrzések
Alapértelmezés szerint az .NET.NET Aspire integrációk lehetővé teszik állapotellenőrzéseket az összes szolgáltatás esetében. További információ: .NET.NET Aspire integrációk áttekintése.
A .NET AspireRabbitMQ integrációja:
- Hozzáadja az egészségügyi ellenőrzést, ha RabbitMQClientSettings.DisableHealthChecks
false
, amely megpróbál csatlakozni a RabbitMQ szerverhez és csatornát létrehozni. - Integrálható a
/health
HTTP-végponttal, amely meghatározza, hogy az összes regisztrált állapot-ellenőrzésnek át kell mennie ahhoz, hogy az alkalmazás készen álljon a forgalom elfogadására.
Megfigyelhetőség és telemetria
.NET .NET Aspire integrációk automatikusan beállítják a naplózási, nyomkövetési és metrikakonfigurációkat, amelyeket más néven a megfigyelhetőség alappillérei. Az integráció megfigyelhetőségéről és telemetriáról további információt .NET.NET Aspire integrációk áttekintésében. A háttérszolgáltatástól függően előfordulhat, hogy egyes integrációk csak bizonyos funkciókat támogatnak. Egyes integrációk például támogatják a naplózást és a nyomkövetést, a metrikákat azonban nem. A telemetriai funkciók a Konfiguráció szakaszban ismertetett technikákkal is letilthatók.
Fakitermelés
Az .NET AspireRabbitMQ integráció a következő naplókategóriákat használja:
RabbitMQ.Client
Nyomkövetés
A .NET AspireRabbitMQ integráció a következő nyomkövetési tevékenységeket bocsátja ki a OpenTelemetryhasználatával:
Aspire.RabbitMQ.Client
Metrikák
A .NET AspireRabbitMQ integráció jelenleg alapértelmezés szerint nem támogatja a metrikákat.