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
L'intégration de l'hébergement RabbitMQ modélise un serveur RabbitMQ en tant que type 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 de serveur RabbitMQ
Dans votre projet hôte d’application, appelez AddRabbitMQ sur l’instance de builder
pour ajouter une ressource de serveur RabbitMQ :
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 serveur RabbitMQ sur votre ordinateur local. Une référence à votre serveur RabbitMQ (la variable rabbitmq
) est ajoutée au ExampleProject
. La ressource de serveur RabbitMQ 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 à un serveur RabbitMQ existant, appelez AddConnectionString à la place. Pour plus d’informations, consultez Référencer les ressources existantes.
Ajouter la ressource serveur RabbitMQ avec le plug-in de gestion
Pour ajouter le plug-in de gestion RabbitMQ à la ressource de serveur RabbitMQ, 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 serveur RabbitMQ.
.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 RabbitMQ ressource de serveur avec un volume de données
Pour ajouter un volume de données à la ressource du serveur RabbitMQ, appelez la méthode WithDataVolume sur la ressource de serveur 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...
Le volume de données est utilisé pour conserver les données du serveur RabbitMQ 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 du serveur RabbitMQ et lorsqu’un paramètre name
n’est pas fourni, le nom est généré au hasard. 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.
Ajoutez la ressource serveur RabbitMQ avec un montage de liaison de fichiers.
Pour ajouter un montage de liaison de données à la ressource de serveur RabbitMQ, 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 du serveur RabbitMQ entre les redémarrages de conteneur. Le point de montage de liaison de données est monté au chemin d'accès C:\RabbitMQ\Data
sur Windows (ou /RabbitMQ/Data
sur Unix) sur la machine hôte, dans le conteneur du serveur RabbitMQ. Pour plus d’informations sur les montages de points de données, consultez Docker docs : montages de points de données.
Ajouter RabbitMQ ressource de serveur 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 de serveur RabbitMQ. La vérification d’intégrité vérifie que le serveur RabbitMQ est en cours d’exécution et qu’une connexion peut être établie à celle-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 du client .NET AspireRabbitMQ, installez le 📦Aspire.RabbitMQ.Client package NuGet dans le projet consommant le client, c’est-à-dire le projet pour l’application qui utilise le client RabbitMQ. L’intégration du client RabbitMQ inscrit une instance IConnection que vous pouvez utiliser pour interagir avec RabbitMQ.
dotnet add package Aspire.RabbitMQ.Client
Ajouter RabbitMQ client
Dans le fichier Program.cs de votre projet client-consommateur, appelez la méthode d’extension AddRabbitMQClient sur un(e) IHostApplicationBuilder pour enregistrer un(e) IConnection
à utiliser via le conteneur d’injection de dépendances. 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 de serveur RabbitMQ dans le projet hôte de l’application. Pour plus d’informations, consultez Ajouter RabbitMQ ressource serveur.
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 un client RabbitMQ avec clé
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 de l’intégration du client RabbitMQJSON, 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
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
, ce qui tente de se connecter et de créer un canal sur le serveur RabbitMQ. - 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.