Megosztás a következőn keresztül:


.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/DataUnix) 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.Client7.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.v7nevű ü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.Client7.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.DisableHealthChecksfalse, 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.

Lásd még: