Partager via


intégration de .NET AspireRabbitMQ

inclut :intégration d’hébergement et intégration Client

RabbitMQ est un répartiteur de messagerie et de diffusion en continu fiable, qui est facile à déployer sur des environnements cloud, localement et sur votre ordinateur local. L’intégration .NET AspireRabbitMQ vous permet de vous connecter à des instances de RabbitMQ existantes ou de créer de nouvelles instances à partir de .NET avec l’image conteneur docker.io/library/rabbitmq.

Intégration de l’hébergement

Le modèle d’hébergement RabbitMQ intègre un RabbitMQserver en tant que type de RabbitMQServerResource. Pour accéder à ce type et à ses API, ajoutez le package NuGet 📦Aspire.Hosting.RabbitMQ dans le projet hôte de l’application .

dotnet add package Aspire.Hosting.RabbitMQ

Pour plus d’informations, consultez dotnet add package ou Gérer les dépendances de package dans les applications .NET.

Ajouter une ressource RabbitMQserver

Dans votre projet hôte d’application, appelez AddRabbitMQ sur l’instance de builder pour ajouter une ressource RabbitMQserver :

var builder = DistributedApplication.CreateBuilder(args);

var rabbitmq = builder.AddRabbitMQ("messaging");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(rabbitmq);

// After adding all resources, run the app...

Lorsque .NET.NET Aspire ajoute une image conteneur à l’hôte de l’application, comme illustré dans l’exemple précédent avec l’image docker.io/library/rabbitmq, il crée une instance de RabbitMQserver sur votre ordinateur local. Une référence à votre RabbitMQserver (la variable rabbitmq) est ajoutée au ExampleProject. La ressource RabbitMQserver inclut des informations d’identification par défaut avec une username de "guest" et des password générées de manière aléatoire à l’aide de la méthode CreateDefaultPasswordParameter.

La méthode WithReference configure une connexion dans le ExampleProject nommé "messaging". Pour plus d'informations, consultez cycle de vie des ressources du conteneur.

Pourboire

Si vous préférez vous connecter à une RabbitMQserverexistante, appelez AddConnectionString à la place. Pour plus d’informations, consultez Référencer les ressources existantes.

Ajouter la ressource RabbitMQserver avec plug-in de gestion

Pour ajouter le plug-in de gestion RabbitMQ à la ressource RabbitMQserver, appelez la méthode 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...

Le plug-in de gestion RabbitMQ fournit une API basée sur HTTP pour la gestion et la surveillance de votre RabbitMQserver. .NET .NET Aspire ajoute une autre image conteneur docker.io/library/rabbitmq-management à l’hôte d’application qui exécute le plug-in de gestion.

Ajouter la ressource RabbitMQserver avec le volume de données

Pour ajouter un volume de données à la ressource RabbitMQserver, appelez la méthode WithDataVolume sur la ressource 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...

Le volume de données est utilisé pour conserver les données RabbitMQserver en dehors du cycle de vie de son conteneur. Le volume de données est monté sur le chemin d’accès /var/lib/rabbitmq dans le conteneur RabbitMQserver et lorsqu’un paramètre name n’est pas fourni, le nom est généré de manière aléatoire. Pour plus d'informations sur les volumes de données et sur la raison pour laquelle ils sont préférés par rapport aux montages de liaison , consultez la doc Docker : Volumes.

Ajouter RabbitMQserver ressource avec montage de liaison de données

Pour ajouter un montage de liaison de données à la ressource RabbitMQserver, appelez la méthode 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...

Important

Les montages de liaison de données ont des fonctionnalités limitées par rapport aux volumes , ce qui offre de meilleures performances, la portabilité et la sécurité, ce qui les rend plus adaptés aux environnements de production. Toutefois, les montages par lien autorisent l’accès direct et la modification des fichiers sur le système hôte, idéal pour le développement et les tests où des modifications en temps réel sont nécessaires.

Les montages de liaison de données s’appuient sur le système de fichiers de l’ordinateur hôte pour conserver les données RabbitMQserver entre les redémarrages de conteneur. Le montage de liaison de données est effectué sur le chemin C:\RabbitMQ\Data sous Windows (ou sur le chemin /RabbitMQ/Data sur Unix) de l’ordinateur hôte dans le conteneur RabbitMQserver. Pour plus d’informations sur les montages de points de données, consultez Docker docs : montages de points de données.

Ajouter RabbitMQserver ressource avec des paramètres

Lorsque vous souhaitez fournir explicitement le nom d’utilisateur et le mot de passe utilisés par l’image conteneur, vous pouvez fournir ces informations d’identification en tant que paramètres. Prenons l’exemple de remplacement suivant :

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...

Pour plus d’informations sur la fourniture de paramètres, consultez paramètres externes.

Vérifications d’intégrité de l’intégration d’hébergement

L’intégration d’hébergement RabbitMQ ajoute automatiquement un contrôle d’intégrité pour la ressource RabbitMQserver. La vérification d’intégrité vérifie que le RabbitMQserver est en cours d’exécution et qu’une connexion peut être établie à celui-ci.

L'intégration de l'hébergement s'appuie sur le package NuGet AspNetCore.HealthChecks 📦.Rabbitmq.

intégration de Client

Pour commencer à utiliser l’intégration .NET AspireRabbitMQclient, installez le paquet NuGet 📦Aspire.RabbitMQ.Client dans le projet consommant client, c'est-à-dire le projet pour l’application qui utilise le RabbitMQclient. L’intégration RabbitMQclient inscrit une instance IConnection que vous pouvez utiliser pour interagir avec RabbitMQ.

dotnet add package Aspire.RabbitMQ.Client

Ajouter RabbitMQclient

Dans le fichier Program.cs de votre projet consommant client, appelez la méthode d’extension AddRabbitMQClient sur n’importe quel IHostApplicationBuilder pour enregistrer un IConnection à utiliser via le conteneur d’injection de dépendance. La méthode prend un paramètre de nom de connexion.

builder.AddRabbitMQClient(connectionName: "messaging");

Pourboire

Le paramètre connectionName doit correspondre au nom utilisé lors de l’ajout de la ressource RabbitMQserver dans le projet hôte de l’application. Pour plus d’informations, consultez Ajouter RabbitMQserverressource .

Vous pouvez ensuite récupérer l’instance IConnection à l’aide de l’injection de dépendances. Par exemple, pour récupérer la connexion à partir d’un exemple de service :

public class ExampleService(IConnection connection)
{
    // Use connection...
}

Pour plus d’informations sur l’injection de dépendances, consultez .NET injection de dépendances.

Ajouter des clés RabbitMQclient

Il peut arriver que vous souhaitiez inscrire plusieurs instances de IConnection avec différents noms de connexion. Pour enregistrer les clients RabbitMQ enregistrés, appelez la méthode AddKeyedRabbitMQClient :

builder.AddKeyedRabbitMQClient(name: "chat");
builder.AddKeyedRabbitMQClient(name: "queue");

Vous pouvez ensuite récupérer les instances IConnection à l’aide de l’injection de dépendances. Par exemple, pour récupérer la connexion à partir d’un exemple de service :

public class ExampleService(
    [FromKeyedServices("chat")] IConnection chatConnection,
    [FromKeyedServices("queue")] IConnection queueConnection)
{
    // Use connections...
}

Pour plus d’informations sur les services à clé, consultez .NET services à clé : injection de dépendances.

Configuration

L’intégration .NET AspireRabbitMQ fournit plusieurs options pour configurer la connexion en fonction des exigences et des conventions de votre projet.

Utiliser une chaîne de connexion

Lorsque vous utilisez une chaîne de connexion à partir de la section de configuration ConnectionStrings, vous pouvez fournir le nom de la chaîne de connexion lors de l’appel de la méthode AddRabbitMQClient :

builder.AddRabbitMQClient(connectionName: "messaging");

Ensuite, la chaîne de connexion est récupérée à partir de la section de configuration ConnectionStrings :

{
  "ConnectionStrings": {
    "messaging": "amqp://username:password@localhost:5672"
  }
}

Pour plus d’informations sur la mise en forme de cette chaîne de connexion, consultez la documentation de spécification d’URI RabbitMQ.

Utiliser des fournisseurs de configuration

L’intégration .NET AspireRabbitMQ prend en charge Microsoft.Extensions.Configuration. Il charge le RabbitMQClientSettings à partir de la configuration en utilisant la clé Aspire:RabbitMQ:Client. L’extrait de code suivant est un exemple de fichier appsettings.json qui configure certaines des options :

{
  "Aspire": {
    "RabbitMQ": {
      "Client": {
        "ConnectionString": "amqp://username:password@localhost:5672",
        "DisableHealthChecks": true,
        "DisableTracing": true,
        "MaxConnectRetryCount": 2
      }
    }
  }
}

Pour obtenir le schéma complet RabbitMQclient d’intégration JSON, consultez Aspire.RabbitMQ.Client/ConfigurationSchema.json.

Utiliser des délégués en ligne

Vous pouvez également transmettre le délégué Action<RabbitMQClientSettings> configureSettings pour configurer certaines ou toutes les options en ligne, par exemple pour désactiver les contrôles de santé à partir du code :

builder.AddRabbitMQClient(
    "messaging",
    static settings => settings.DisableHealthChecks = true);

Vous pouvez également configurer le IConnectionFactory à l’aide du paramètre délégué de la méthode . Par exemple, pour définir le nom client fourni pour les connexions :

builder.AddRabbitMQClient(
    "messaging",
    configureConnectionFactory:
        static factory => factory.ClientProvidedName = "MyApp");

Client vérifications d’intégrité de l’intégration

Par défaut, .NET.NET Aspire intégrations permettent contrôles de santé pour tous les services. Pour plus d’informations, consultez .NET.NET Aspire vue d’ensemble des intégrations.

Intégration .NET AspireRabbitMQ :

  • Ajoute la vérification de l'état de santé lorsque RabbitMQClientSettings.DisableHealthChecks est false, qui tente de se connecter et de créer un canal sur le RabbitMQserver.
  • S’intègre au point de terminaison HTTP /health, qui spécifie que toutes les vérifications d’intégrité inscrites doivent passer pour que l’application soit considérée comme prête à accepter le trafic.

Observabilité et télémétrie

Les intégrations .NET.NET Aspire configurent automatiquement la journalisation, le traçage et les métriques, parfois appelés les piliers de l'observabilité. Pour plus d’informations sur l’observabilité de l’intégration et la télémétrie, consultez .NET.NET Aspire vue d’ensemble des intégrations. Selon le service de stockage, certaines intégrations peuvent uniquement prendre en charge certaines de ces fonctionnalités. Par exemple, certaines intégrations prennent en charge la journalisation et le suivi, mais pas les métriques. Les fonctionnalités de télémétrie peuvent également être désactivées à l’aide des techniques présentées dans la section Configuration.

Exploitation forestière

L’intégration .NET AspireRabbitMQ utilise les catégories de journaux d'événements suivantes :

  • RabbitMQ.Client

Traçage

L’intégration .NET AspireRabbitMQ émet les activités de suivi suivantes à l’aide de OpenTelemetry:

  • Aspire.RabbitMQ.Client

Métriques

L’intégration .NET AspireRabbitMQ ne prend actuellement pas en charge les métriques par défaut.

Voir aussi