78. pepsi-failure-bouncer¶
Canaliser les messages en échec ou en timeout vers l’étape de rebond.
78.1. Rôle¶
Un message du pipeline post-ingress finit en failed (une étape a renvoyé une erreur permanente, ou son worker a planté) ou en timeout (un worker a dépassé [pepsi-dispatch] MAX_RUNTIME) lorsque son étape abandonne. Le dispatcher ne remet jamais une telle ligne en file, de sorte que sans intervention de l’opérateur le message reste bloqué dans pepsi.workqueue et l’expéditeur n’est jamais notifié.
pepsi-failure-bouncer déplace chaque message bloqué vers le [pepsi-failure-bouncer] BOUNCE_STAGE configuré et le remet à pending, de sorte que le dispatcher exécute l’étape de rebond (pepsi-stage-bounce), qui — selon le NOTIFY RFC 3461 de l’expéditeur — émet une notification d’état de remise. Un message déjà à l’étape de rebond est laissé intact, de sorte qu’un rebond qui échoue à cette étape ne boucle pas ; un rebond qui échoue en aval (un DSN à expéditeur nul non relayable) est ramené en arrière et simplement abandonné (un rebond ne rebondit jamais une seconde fois).
Il se connecte via [pepsi-postgres] et est configuré par [pepsi-failure-bouncer], dont le BOUNCE_STAGE est obligatoire (c’est toute la configuration : l’étape vers laquelle les messages bloqués sont déplacés). Ce n’est pas une étape. Démarré en tant que root, il poursuit sous le compte de service pepsi — le rôle qui possède la file d’attente — avant de se connecter. Référence : pepsi-failure-bouncer(1).
78.2. Modes¶
service (par défaut, sans
--once) — un processus de longue durée qui fait unLISTENsur le canalworkqueue_failed(émis par le déclencheurworkqueue_failed_notifychaque fois qu’une ligne passe en failed ou timeout) et fait rebondir chaque message à mesure qu’il arrive. Il balaie au démarrage et à chaque reconnexion tous les messages déjà bloqués, de sorte que rien n’est manqué, et s’exécute jusqu’àSIGINT/SIGTERM.–once — balayer une seule fois les messages actuellement bloqués puis sortir (exécution manuelle par l’opérateur ou tâche cron).
--failed-only / --timeout-only restreignent l’un ou l’autre mode à l’un des deux états terminaux.
78.3. Voir aussi¶
pepsi-dispatch, pepsi-stage-bounce, pepsi-queue, pepsi-status, pepsi-failure-bouncer(1), pepsi.conf(5).