Gadz.org souhaite privilégier l'Architecture Orientée Service (FR) afin de fluidifier les évolutions des applications ainsi que les évolutions technologiques.

Règles de design

  1. Les applications communiquent entre elles via RabbitMQ - Gestion de RabbitMQ
  2. Les applications peuvent requeter les référentiels directement via une API HTTP. Dans ce cas, la dépendance au service concernée doit être explicitement signalée

Voir Producteur de messages et 

Topologie

Voir Topologie

Structure des messages

Voir Messages

Gestion des erreurs

Dans chaque applications, des erreurs peuvent empecher le message d'être traiter. Chaque message contient l'historique des erreurs qui lui sont associées.

Si un service consommateur souhaite ajouter une erreur il doit obligatoirement renvoyer ce message vers l'exchange RabbitMQ principal. Si le traitement du message ne necessitait pas que celui-ci soit envoyé à un autre service consomateur, il peut être envoyé directement au service d'audit via la routing key spéciale : "agoram.log"

Debugger les messages

Visualiser les messages transmis

Nous avons créer un outil maison pour visualiser les messages sur https://gorg-soa-supervision.herokuapp.com/. Le code source est ici :  https://github.com/gadzorg/gorg_soa_supervision

Il peut également être utilisé en ligne de commande pour trouver plus efficacement des messages précis.

Envoyer un message manuellement

 https://gorg-soa-supervision.herokuapp.com/  peut également être utilisé pour envoyer des messages manuellement