Aller au contenu

Reconnexion automatique des services et des moteurs

À partir de Canopsis 4.1.0, le fichier de configuration canopsis.toml prend en charge de nouveaux paramètres permettant de configurer la reconnexion automatique en cas d'erreur.

Configuration de la reconnexion

Les paramètres présents par défaut dans le fichier canopsis.toml pour la reconnexion automatique sont les suivants :

[Canopsis.global]
ReconnectRetries = 3
ReconnectTimeoutMilliseconds = 8
  • ReconnectRetries représente le nombre de tentatives de reconnexion en cas d'erreur, 3 par défaut.
  • ReconnectTimeoutMilliseconds est le délai minimum entre chaque tentative. Par défaut, il est de 8 millisecondes et on parle de délai minimum, car celui-ci double à chaque tentative de reconnexion. Soit, avec la configuration par défaut, 8 ms avant le premier essai de reconnexion, 16 ms avant le second, 32 ms avant le troisième.

Ce mécanisme de reconnexion automatique est utilisé par MongoDB, Redis, RabbitMQ, les moteurs Canopsis ainsi que canopsis-api.

Ce mécanisme de reconnexion automatique est utilisé par MongoDB, Redis, RabbitMQ, les moteurs Canopsis ainsi que canopsis-api.

Note

Toute modification d'une de ces valeurs implique de suivre de le Guide de modification du fichier canopsis.toml.

Perte de connexion à MongoDB

Lors de l'exécution d'une commande, si une erreur de connexion est reçue, la commande sera automatiquement exécutée de nouveau. Le nombre de tentatives d'exécution supplémentaires est égal à ReconnectRetries.

MongoDB dispose également d'options supplémentaires telles que SocketTimeout et ServerSelectionTimeout permettant de gérer les incidents de connexion. Reportez-vous à la documentation MongoDB pour obtenir plus d'informations concernant l'utilisation de ces paramètres.

Perte de connexion à Redis

Le fonctionnement est le même que pour MongoDB mais Redis n'a pas d'options internes pour gérer les incidents de connexion.

Perte de connexion à RabbitMQ

Le comportement est identique à celui de Redis.

Comportement de la reconnexion dans les moteurs et services Canopsis

Processus périodique

En cas d'incident de connexion, le processus exécute de nouveau la commande autant de fois que la valeur de ReconnectRetries. Si l'incident subsiste à l'issue des nouvelles tentatives, il inscrit l'erreur dans les logs et attend le prochain battement.

Processus de travail

En cas d'erreur de connexion, le processus tente de nouveau d'exécuter la commande en fonction de la valeur de ReconnectRetries. Si l'incident persiste, il envoie un message de type nack à RabbitMQ, inscrit l'erreur dans les logs et arrête le moteur.

S'il s'agit d'une erreur d'un autre type, le processus envoie un message de type ack à RabbitMQ, inscrit l'erreur dans les logs et passe à la tâche suivante.

Service canopsis-api

Ce service ne s'arrête jamais de fonctionner, quel que soit le type d'erreur rencontré. S'il s'agit d'une erreur de connexion, il essaie de se reconnecter indéfiniment.


Dernière mise à jour: 2021-10-08