Un travailleur trop lent peut revenir après qu’un autre a repris sa tâche. S’il suffit de connaître l’identifiant de la tâche pour la terminer, le premier peut confirmer un travail devenu obsolète. Les baux et les tentatives servent précisément à éviter cette confusion.

01

L’identité protège la demande

Une nouvelle soumission ne peut pas remplacer silencieusement une tâche existante. L’identité d’enqueue doit garder son sens.

02

Le bail donne une responsabilité temporaire

Le lease possède son identité et sa durée. La tentative est numérotée ; le travailleur courant en est propriétaire.

03

La confirmation vérifie le présent

L’ack doit correspondre au bail, à la tentative, au propriétaire et à l’état courant. Un ancien travailleur ne peut pas confirmer simplement parce qu’il connaît le task_id.

04

Les effets extérieurs ont leur propre contrat

Une file ne garantit pas à elle seule un paiement ou un envoi une seule fois. L’application consommatrice doit prévoir des effets idempotents ou des reçus adaptés.

Exemple de responsabilité de traitement
tâche A
  tentative 1 → bail expiré
  tentative 2 → bail courant → confirmation acceptée

confirmation tardive de la tentative 1 → refus

Et face aux autres outils ?

Comparaison de périmètres, sans classement de performances. Références éditeurs consultées le 31 octobre 2026.

RabbitMQ

Des systèmes de messagerie disposant de leurs propres mécanismes de livraison et de confirmation. SHAPER Queue se concentre sur les tâches, les tentatives et les baux d’un service.

Documentation de référence ↗

NATS JetStream

JetStream ajoute à NATS des flux persistants et des consommateurs avec acquittement. Ce besoin de diffusion de messages est distinct du contrat de tâche SHAPER.

Documentation de référence ↗

Sources et références

Les mécanismes sont présentés avec leur périmètre d’utilisation. Leur qualification dans votre environnement reste une étape distincte. Les liens ci-dessous donnent accès aux références publiques disponibles.