C'est peut-être une mauvaise idée. Tout d'abord, il est emblématique de la maxime "la définition de la folie est de faire deux fois la même chose et espérer des résultats différents à chaque fois". Deuxièmement, ce modèle de codage n'est pas bien composer avec lui-même. Par exemple:
Supposons que votre matériel réseau couche renvoie un paquet de trois fois en cas d'erreur, d'attente, de dire, d'une seconde entre les pannes.
Supposons maintenant que la couche de logiciel renvoie une notification à propos d'un échec à trois reprises sur le paquet de l'échec.
Supposons maintenant que la notification de la couche réactive la notification à trois reprises sur une notification d'échec de remise.
Supposons maintenant que le rapport d'erreur de la couche réactive la notification de la couche trois fois sur une notification d'échec.
Et maintenant, supposons que le serveur web réactive le rapport d'erreur à trois reprises sur erreur échec.
Et maintenant, imaginons que le client web envoie à nouveau la demande trois fois sur une erreur du serveur.
Supposons maintenant que la ligne sur le commutateur de réseau qui est censé route de la notification de l'administrateur est débranché. Lorsque l'utilisateur du client web enfin à leur message d'erreur? Je le fais à environ douze minutes plus tard.
De peur que vous pensez que c'est juste un exemple stupide: nous avons vu ce bug dans le code client, bien loin, bien pire que ce que j'ai décrit ici. Dans le code du client, l'écart entre la condition d'erreur qui se passe et enfin de les signaler à l'utilisateur a plusieurs semaines , car de nombreuses couches ont été automatiquement une nouvelle tentative avec attend. Imaginez ce qui se passerait s'il y avait dix tentatives au lieu de trois.
Généralement la bonne chose à faire avec une condition d'erreur est de le signaler immédiatement et permettre à l'utilisateur de décider quoi faire. Si l'utilisateur veut créer une politique de tentatives automatiques, laissez-les créer que de la politique au niveau approprié dans le logiciel de l'abstraction.