< Patrons de conception
Patron de conception
Catégorie : Autre
Nom français : Boite d'envoi
Nom anglais : Outbox
Stocker les évènements d'une mise à jour dans la même transaction.

Principe

Lorsque l'on doit notifier de la mise à jour d'une base de données, plusieurs problèmes peuvent survenir :

  • La base peut être mise à jour puis la notification envoyée (en asynchrone ou pas), et finalement échouer. Les notifiés considéreront alors que la base n'a pas été mise à jour à tort. Par exemple, à cause d'une panne du SMTP, et cet envoi ne peut pas faire partie d'un commit / rollback SQL.
  • Si en envoie d'abord la notification puis met à jour la base, il y a un également risque que la seconde action échoue. Les notifiés considéreront alors que la base a pas été mise à jour à tort.


L'outbox pattern permet de résoudre tout cela en utilisant une table pour stocker les messages de notification[1]. Ces derniers sont alors enregistrés en même temps que la mise à jour à notifier, dans la même transaction. Ils sont donc fortement couplés : l'un ne peut pas aller sans l'autre.

Ils sont ensuite dépilés par le service qui assure la notification, et peuvent être rejoués en cas de problème d'envoi.

Références

Cet article est issu de Wikibooks. Le texte est sous licence Creative Commons – Attribution – Partage à l’identique. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.