- Créer le micro service Customer-service
- Créer entité Customer
- Créer l'interface CustomerRepository basée sur Spring Data
- Déployer l'API Restful du micro-service en utilisant Spring Data Rest
- Tester le Micro service
- Créer le micro service Inventory-service
- Créer l'entité Product
- Créer l'interface ProductRepository basée sur Spring Data
- Déployer (API Restful du micro-service en utilisant Spring Data Rest
- Tester le Micro service
- Créer la Gateway service en utilisant Spring Cloud Gateway
- Tester le Service proxy en utilisant une configuration Statique basée sur le fichier application.yml
- Tester le Service proxy en utilisant une configuration Statique basée une configuration Java
- Créer l'annuaire Registry Service basé sur NetFlix Eureka Server
- Tester le proxy en utilisant une configuration dynamique de Gestion des routes vers les micro services enregistrés dans l'annuaire Eureka Server
- Créer Le service Billing-Service en utilisant Open Feign pour communiquer avec les services Customer-service et Inventory-service 7. Créer un client Angular qui permet d'afficher une facture
- Créer un client Angular qui permet d'afficher une facture
Créer un fichier application.yml dans ressources
Et dans application.properties
On essaie de communiquer directement avec la gateway et voir si on peut atteindre les micro-services ;
- Customers
- Products
Donc, à travers la gateway on a pu communiquer avec 2 micro-services
Maintenant, on va désactiver la configuration par fichier application.yml par changer son nom et on va essayer la configuration JAVA.
Et tout ça va marcher comme pour application.yml Ces deux méthodes sont des méthodes statiques qu’on utilise quand l’adresse est fixe et on connait.
Pour faire dynamiquement, on va créer un nouveau projet eureka-discovery, avec juste la dépendance Eureka Server, et on met l’annotation.
Dans Inventory-service et Customer-service et Gateway-service on change false à true
lb c’est pour Load Balancer Et maintenant, tout ça fonctionne bien, et juste avec le nom du micro-service
La méthode précédente, ce n’est pas évidente quand on a beaucoup de micro-service, pour cela on va essayer d’exploiter une méthode plus dynamique.
Maintenant, on peut atteindre notre micro-service par l’url mais on doit ajouter le nom du micro-service avant le Path
S’il y a plusieurs instances de même micro-service le Gateway utilise le principe de l’équilibrage de charge ; le spring cloud gateway utilise un service spring cloud qui s’appelle Ribon, qui est un service d’équilibrage de charge, on n’a pas l’exploiter explicitement mais il est utilisé implicitement, mais on peut le configurer nous-même.
On voit que l’ID est null, pour l’exposer on doit ajouter dans Customer-service avec RestConfiguration
Le même pour inventory
Lier les produits à une facture
Problème de Boucle infinie
Pour régler le problème
Le problème est résolu
Mais sans le nom du produit et les informations sur le client sauf son ID, pour cela on va essayer de les récupérer.
Et on va avoir le résultat suivant :
Mais on aucun besoin d’ajouter les autres informations du produit puisqu’elles sont déjà présentes Donc on va ajouter seulement un attribut productName au productItem avec l’annotations @Transient puisqu’on ne veut pas créer cet attribut sur la table
Et on modifie BillingRestController pour qu’il soit :
Le résultat :