Mettre en place un système de rejeu: contexte
Dans ce tutoriel, nous allons expliquer comment mettre en place un système de rejeu en utilisant TIBCO EMS (Enterprise Message Service), l’un des composants clés de TIBCO. Le rejeu joue un rôle essentiel dans les projets d’intégration basés sur un bus de services (ESB). L’objectif est de garantir la fiabilité et la résilience du système.
Pourquoi mettre en place un système de rejeu est-il important ?
Dans les environnements d’intégration, une fois que l’ESB prend en charge un message. Le message doit impérativement atteindre sa destination finale ou, en cas d’impossibilité de traitement correct, être mis à l’écart. En effet, la règle d’or est de ne jamais perdre un seul message. Pour certaines erreurs, le système peut déclencher un rejeu automatique avant d’écarter définitivement le message. Il est donc important de savoir qu’un message écarté ne veut pas dire qu’il est perdu. Dans ce cas, le système peut tout simplement placer le message dans une file d’erreurs ou le retourner à son émetteur.
Alors, dans quel cas il peut être nécessaire d’activer le rejeu ?
Erreurs nécessitant un rejeu automatique
Pour mettre en place un mécanisme de rejeu efficace, capable de gérer plusieurs tentatives d’intégration en cas d’échec. Il est en effet crucial de prendre en compte à la fois les erreurs techniques et fonctionnelles. Voici quelques types d’erreurs pour lesquelles il est légitime se poser la question d’activer ou pas le rejeu automatique :
- Erreur de configuration d’un fichier ?
- Erreur de validation des données ?
- Erreur d’authentification ?
- Erreur de performance ?
- Erreurs de logique métier ?
- Non-conformité aux spécifications ?
- Erreur de timeout ?
Distinction entre erreurs fonctionnelles et techniques
Avant de configurer le rejeu, il est essentiel de distinguer les erreurs fonctionnelles des erreurs techniques et de les classer en conséquence. Bien que la classification des erreurs ne soit pas le sujet principal de ce tutoriel. Elle constitue une étape préliminaire cruciale. Dans la mise en œuvre de votre rejeu, je vous invite à traiter d’abord cette question avant de vous y lancer.
Mettre en place un système de rejeu: cas pratique
Passons maintenant à la mise en œuvre d’un cas pratique pour illustrer la configuration d’un système de rejeu avec TIBCO EMS.
Étapes de configuration d’un système de rejeu classique
Voici les étapes pour un système classique de rejeu qui n’exploite pas le fonctionnement natif du broker de message.
- Configuration de la file d’erreurs : Créez une file dédiée aux messages. Cette file doit stocker les messages jusqu’à ce que le système puisse les réessayer ou les traiter manuellement.
- Détection des erreurs : Configurez des mécanismes pour détecter automatiquement les erreurs techniques et fonctionnelles. Cela peut inclure des vérifications de validation des données, des tests de performance ainsi que des contrôles d’authentification.
- Stratégie de rejeu : Définissez une stratégie de rejeu adaptée à chaque type d’erreur. Par exemple, un rejet immédiat pour les erreurs de configuration et plusieurs tentatives pour les erreurs de timeout.
- Mécanisme de notification : Mettez en place un système de notification pour informer les administrateurs ainsi que les systèmes concernés en cas d’échec répété.
- Journalisation et suivi : Assurez-vous que chaque tentative de traitement ainsi que chaque échec sont soigneusement journalisés pour faciliter le suivi et la résolution des problèmes.
Étapes de configuration du rejeu avec TIBCO EMS
TIBCO EMS nous donne la possibilité de mettre en place un système de rejeu basé exclusivement sur le fonctionnement natif de l’EMS. Ce mécanisme de rejeu se base essentiellement sur 2 paramètres redeliveryDelay et maxRedelivery. Notez que ces paramètres existent depuis la spécification JMS 2.0 qui est implémentées dans le serveur EMS à partir de la version 8. Ainsi, avant d’essayer d’utiliser ces 2 paramètres, assurez-vous de la compatibilité de votre serveur EMS et du client utilisé avec la spécifications JMS 2.0.
- Le premier paramètre redeliveryDelay spécifie le temps d’attente que le serveur EMS doit observer avant de mettre le message à disposition dans la file d’attente. Vous pouvez définir le « redeliveryDelay » en utilisant la forme : « redeliveryDelay »=time[sec|min|hour]. Le délai d’attente varie entre 15 secondes et 8 heures. Exemple : « redeliveryDelay »=30min. Pendant l’intervalle de délai, le système place les messages dans la file d’attente $sys.redelivery.delay.
- Le 2° paramètre maxRedelivery spécifie le nombre maximum de fois qu’un message peut être livré au destinataire. C’est un compteur d’entier dont la valeur peut être comprise entre 2 et 255. Une valeur de « 0 » désactive maxRedelivery, donc il n’y a pas de maximum. Une fois que le serveur a tenté de livrer le message le nombre de fois spécifié, il le détruit ou, si la propriété JMS_TIBCO_PRESERVE_UNDELIVERED du message est définie sur vrai, il place le message dans la file d’attente des messages non livrés pour qu’un consommateur spécial puisse le traiter.
Tout d’abord, configurez, démarrez et assurez-vous que le serveur EMS est en cours d’exécution.
Maintenant on va se connecter au serveur pour créer une file qu’on va appeler « queue.formation.tibco.rejeu ».
Pour se connecter au serveur EMS, allez dans le répertoire d’installation de TIBCO EMS et exécutez :
TIBCO_HOME/ems/VERSION/bin/tibemsadmin.exe
connect tcp://PORT USER PASSWORD
La commande pour créer une queue est « create queue queue_name [properties]«
create queue queue.formation.tibco.rejeu redeliveryDelay=30min,maxRedelivery=10
Une fois que vous avez créé votre file, il est toujours possible d’ajouter des paramètres ou de mettre à jours les valeurs des paramètres existants. Pour cela, exécutez la commande :
addprop queue queue_name "properties"
Comment tester si notre système de rejeu fonctionne ?
Tout d’abord, nous allons créer un projet BW qui lit les messages dans une queue et les envoie vers un serveur FTP. Pour notre rejeu, nous allons voir le comportement du serveur EMS lorsque le serveur FTP est indisponible. En suite, nous allons tester différentes configurations en modifiant les valeurs des paramètres de notre queue.
Conclusion
En suivant ces étapes, vous pouvez configurer un système de rejeu robuste et efficace avec TIBCO EMS. Ce système,, si mis en peuvre correctement, vous garantit que vos messages ne sont jamais perdus et que votre système d’intégration reste fiable et résilient. Pour une implémentation réussie, il est essentiel de comprendre, d’analyser puis de classer correctement les erreurs. Et enfin de définir des stratégies de rejeu adaptées à chaque scénario.
N’hésitez pas à partager votre expérience ou à poser des questions dans les commentaires ci-dessous. Bonne intégration !
Dieudonné MIAFFO
Expertise TIBCO ESB