Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Demo RabbitMQ avec .NET Aspire

Cette solution démontre la communication entre deux applications console utilisant RabbitMQ dans un environnement .NET Aspire.

Architecture

  • DemoRabbitMq.AppHost : Application hôte Aspire qui orchestre tous les services
  • DemoRabbitMq.ServiceDefaults : Configuration par défaut partagée entre les services
  • ClientA : Application console qui agit comme producteur de messages
  • ClientB : Application console qui agit comme consommateur de messages
  • RabbitMQ : Container de messages qui facilite la communication entre les clients

Fonctionnement

Client A (Producteur)

  • Se connecte à RabbitMQ
  • Envoie un message toutes les 5 secondes
  • Chaque message contient un ID, un timestamp, l'expéditeur et un contenu

Client B (Consommateur)

  • Se connecte à RabbitMQ
  • Écoute la queue "demo-queue"
  • Traite chaque message reçu
  • Acquitte les messages après traitement

Prérequis

  • .NET 8.0 SDK ou plus récent
  • Docker Desktop (pour RabbitMQ)
  • .NET Aspire workload

Installation de .NET Aspire

dotnet workload update
dotnet workload install aspire

Exécution

  1. Démarrer la solution Aspire :

    cd DemoRabbitMq.AppHost
    dotnet run
  2. Accéder au tableau de bord Aspire :

    • Ouvrez votre navigateur
    • L'URL du dashboard s'affichera dans la console (ex: https://localhost:17029/login?t=...)
    • Vous verrez le tableau de bord avec tous les services :
      • clienta : Le producteur de messages
      • clientb : Le consommateur de messages
      • rabbitmq : Le container RabbitMQ
  3. Observer les logs :

    • Dans le tableau de bord Aspire, cliquez sur les différents services pour voir leurs logs
    • Client A affichera les messages envoyés toutes les 5 secondes
    • Client B affichera les messages reçus et traités
    • RabbitMQ Management sera accessible via le tableau de bord

Structure des messages

Les messages échangés ont la structure JSON suivante :

{
  "Id": 1,
  "Timestamp": "2025-06-03T10:30:00.000Z",
  "Sender": "Client A",
  "Content": "Message numéro 1 envoyé par Client A"
}

Fonctionnalités démontrées

  • Configuration Aspire : Orchestration de services avec .NET Aspire
  • Service Discovery : Les clients trouvent automatiquement RabbitMQ
  • Container RabbitMQ : Déploiement automatique d'un container RabbitMQ
  • Communication asynchrone : Messages entre services via queues
  • Monitoring : Observabilité via le tableau de bord Aspire
  • Gestion des erreurs : Acquittement et rejet de messages
  • Logging structuré : Logs avec correlation et contexte

Arrêt de l'application

  • Appuyez sur Ctrl+C dans la console où vous avez lancé l'AppHost
  • Tous les services s'arrêteront automatiquement
  • Les containers Docker seront également arrêtés

Extension possible

  • Ajouter plus de producteurs ou consommateurs
  • Implémenter des patterns de messaging plus complexes (fanout, topic routing)
  • Ajouter la persistance des messages
  • Intégrer des métriques et alertes
  • Ajouter des tests d'intégration

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages