Hugo COLLIN, Reika JACQUOT, Nathanaël MIESCH, Gaël BALLOIR
Systeme distribué permettant de commander des pizzas, les préparer, les cuire, et suivre leur livraison.
- Interface client JavaFX permettant de consulter le menu de pizzas, passer commande et suivre l'état de la commande en temps réel
- Système de pizzeria capable de recevoir des commandes, les préparer et les cuire
- Communication asynchrone basée sur des événements via le protocole MQTT
- Gestion des erreurs et timeouts pour assurer une expérience utilisateur fluide
- Traitement parallèle de plusieurs commandes côté pizzeria
Pour utiliser ce système distribué :
0. Lancer un broker MQTT. Le cas échéant, il est possible d'utiliser l'image Docker de ce dépôt : cd broker && docker-compose up -d && cd ..
- Télécharger les JARs Client et Pizzeria depuis la page Releases du dépôt ;
- Lancer le JAR Pizzeria :
java -jar pizzeria-1.0-SNAPSHOT-jar-with-dependencies.jar
; - Lancer le JAR Client :
java -jar client-1.0-SNAPSHOT-jar-with-dependencies.jar
.
- Docker et docker-compose
- Maven
- Java 21
- JavaFX
Effectuer chaque étape dans un terminal différent :
- Démarrer le broker MQTT
cd broker && docker-compose up -d && cd ..
- Recompiler et démarrer la pizzeria
mvn clean compile package -am -pl pizzeria && java -jar pizzeria/target/pizzeria-1.0-SNAPSHOT-jar-with-dependencies.jar
- Recompiler et démarrer le client
mvn clean compile package -am -pl client && java -jar client/target/client-1.0-SNAPSHOT-jar-with-dependencies.jar
Lors de la modification du code du client ou de la pizzeria, l'étape correspondante doit être réexécutée.
Pour compiler tout le projet, exécuter simplement :
mvn clean package
Les JAR exécutables se trouvent aux emplacements suivants :
- Pizzeria :
pizzeria/target/pizzeria-1.0-SNAPSHOT-jar-with-dependencies.jar
- Client :
client/target/client-1.0-SNAPSHOT-jar-with-dependencies.jar
Pour déployer une nouvelle version :
- Pousser un tag Git sur le dépôt. Cela lancera une pipeline GitLab qui génèrera et stockera les JARs compilés sur le dépôt (Package Registry - Registre de paquets).
- Créer une Release manuellement, qui se base sur ce tag, et fournir pour liens ceux des JARs stockés dans le registre de paquets.