Le service bus se base sur la brique logicielle RabbitMQ
Cette brique de message broker permet au produit de s'interface avec les SIRH existants back-office des financeurs qu'ils utilisent déjà pour traiter les demandes d'aides à la mobilité. Ainsi, le financeur s'appuiera sur son SI existant pour les gérer et n'utilisera pas le back-office proposé par le produit.
Ci-dessous une vue globale du processus métier :
Concernant les échanges entre moB et le bus, le protocol amqp pour échanger des messages via la librairie amqplib. Lien vers la documentation complète.
L'authentification via OAuth2 a été configuré pour les environnements distants permettant ainsi d'utiliser un jeton d'authentification émis par idp pour pouvoir publier ou consommer des messages. Le plugin rabbitmq_auth_backend_oauth2 a été utilisé pour cela, sa configuration est visible dans bus/overlays/config/custom.conf.
L'utilisation du fichier definition.json présent dans le dossier overlays permet de définir les configurations nécessaires au bon fonctionnement de l'échange des messages. Elles correspondent à la solution d'architecture technique détaillée du bus ci-dessous mise en place :
docker run -d --name rabbitmq -p 15672:15672 -p 5672:5672 -e RABBITMQ_USERNAME=${BUS_ADMIN_USER} -e RABBITMQ_PASSWORD=${BUS_ADMIN_PASSWORD} bitnami/rabbitmq:latest
Récupérer le fichier overlays/definition.json
Variables | Description | Obligatoire |
---|---|---|
BUS_ADMIN_USER | Username pour la connexion au portail | Oui |
BUS_ADMIN_PASSWORD | Password pour la connexion au portail | Oui |
BUS_MCM_CONSUME_USER | Username pour la réception des messages | Oui |
BUS_MCM_CONSUME_PASSWORD | Password pour la réception des messages | Oui |
IDP_API_CLIENT_SECRET | Client secret du client confidentiel IDP pour l'API | Oui |
CAPGEMINI_SECRET_KEY | Client secret du client confidentiel CAPGEMINI pour l'API | Non |
Importer, via l'interface RabbitMQ, le fichier definition.json modifié avec les valeurs de variables mentionnées ci-dessus.
Portail d'admin :
- URL : localhost
- Port : 15672
Node port :
- URL : localhost
- Port : 5672
Pas de précisions nécéssaires pour ce service
Le fichier definition.json n'est pas importé au déploiement. Il faudra l'importer manuellement comme précisé pour l'installation locale.
Le deploiement du bus est de type statefulSet.
Comme présenté dans le schéma d'architecture détaillée, api possède un child process qui au démarrage de l'application permet d'écouter les messages disponibles sur les queues de consommation.
- api effectue une requête amqp vers bus pour envoyer les données de souscriptions, messages à destination des HRIS
- api effectue des requêtes périodiquement vers bus pour récupérer les données de statut des souscriptions, messages publiés par les HRIS
Bilan des relations:
- Publication de messages sur les queues mob.subscriptions.put.*
- Consommation des messages sur les queues mob.subscriptions.status.*
Pas de tests unitaires nécéssaires pour ce service