Skip to content

Legrandmasson/DSED_Pub_Sub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Système de Gestion de Commandes - Pub/Sub avec RabbitMQ

🎓 Contexte du Projet

Bien que ce système utilise des concepts d'architecture logicielle de niveau entreprise (systèmes distribués, découplage de services, persistance de données), il s'agit d'un projet à des fins éducatives.

L'objectif principal est de démontrer la maîtrise :

  • Du protocole AMQP avec RabbitMQ.
  • De la sérialisation/désérialisation d'objets complexes en C#.
  • De la gestion des flux de données asynchrones (Pub/Sub).
  • De la manipulation du système de fichiers (I/O) en environnement multi-services.

Ce projet implémente un système de messagerie asynchrone basé sur le patron Publish/Subscribe en C#. Il simule la création de commandes aléatoires et leur traitement par différents services via RabbitMQ (v6.8.1).

🛠 Architecture Technique

Le système utilise le modèle d'échange Topic de RabbitMQ pour router les messages en fonction de la priorité du client (Premium ou Normal).

  • Producteur : Génère des objets Commande avec des données aléatoires.
  • Routing Key : * Commande.Placee.Normal
    • Commande.Placee.Premium

📦 Modèle de Données

Commande

  • Guid Reference : Identifiant unique de la commande.
  • string NomClient : Nom du client généré aléatoirement.
  • List<Article> Articles : Liste de produits.
  • bool EstPremium : Indicateur du statut client.

Article

  • Guid Reference : Identifiant unique du produit.
  • string NomProduit : Désignation de l'article.
  • decimal Prix : Prix unitaire.
  • int Quantite : Nombre d'articles.

👥 Consommateurs (Services)

Le projet comporte 4 consommateurs distincts qui réagissent aux messages circulant sur le bus :

Service Filtre (Binding) Action
Journalisation # (Tous) Crée un dossier Journalisation et écrit le détail brut de chaque message dans un fichier.
Facturation Commande.Placee.* Crée un dossier Facturation et génère un fichier de facture pour chaque commande.
Expédition Commande.Placee.* Affiche dans la console la liste des articles à préparer.
Courriel Commande.Placee.* Affiche une notification console personnalisée selon le statut (Premium/Normal).

🚀 Installation et Configuration

Prérequis

  • .NET SDK (Version 6.0 ou +)
  • RabbitMQ Server installé et fonctionnel (Version 6.8.1).

Dépendances NuGet

dotnet add package RabbitMQ.Client --version 6.8.1
dotnet add package Newtonsoft.Json

About

Travail Module 7 dans le cours de développement de services d'échange de données

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages