Ce qui se passe
Symfony savait déjà utiliser MongoDB pour stocker les sessions et gérer les verrous. La version 8.2 y ajoute deux usages : le cache et la file de messages de Messenger.
Le cache
Le composant Cache gagne deux adaptateurs : MongoDbAdapter et
MongoDbTagAwareAdapter. Chaque entrée de cache devient un document. Dans la
variante à étiquettes, les étiquettes sont écrites dans ce même document, si bien
qu'invalider une étiquette tient en une seule requête de suppression.
- Les deux exigent la bibliothèque
mongodb/mongodb. - Dans une application Symfony, on désigne un DSN
mongodb://oumongodb+srv://comme fournisseur des pools. - Hors Symfony, on crée l'adaptateur avec un DSN ou avec l'objet
MongoDB\Client,DatabaseouCollectiondéjà utilisé, puis on appellesetup()une fois : il crée un index TTL, et MongoDB supprime lui-même les entrées expirées.
Le transport Messenger
Le transport MongoDB repose sur le paquet
facile-it/mongodb-messenger-transport. Il stocke les messages comme documents
d'une collection et se configure avec un DSN mongodb:// ou mongodb+srv://.
Les consommateurs réclament les messages de façon atomique : deux workers ne reçoivent jamais le même.
Si un worker plante, son message est redistribué après
redeliver_timeout, une heure par défaut.La commande qui crée l'index servant aux workers :
Terminal php bin/console messenger:setup-transportsAvec
MongoDbSessionStamp, un message part dans la transaction MongoDB en cours : une commande et son messageOrderPlacedsont enregistrés ensemble, ou pas du tout.
Lire plusieurs files d'un coup
Toutes les files vivent dans la même collection (messenger_messages par défaut)
et chaque document porte le nom de sa file. Un worker peut donc en consommer
plusieurs avec une seule requête au serveur. On définit un transport par file,
puis on passe le nom du transport à messenger:consume et les files à l'option
--queues.
Limites annoncées : les messages sortent dans l'ordre où ils deviennent disponibles, sans priorité entre files ; toutes les files doivent être dans la même collection ; un message en échec est rejoué dans la file d'où il vient.
Comment s'y prendre
Quand Symfony 8.2 sera disponible, et seulement si MongoDB est déjà dans votre
pile : installer mongodb/mongodb, lancer messenger:setup-transports, puis
essayer le transport avec un seul worker avant de lui confier le trafic réel.
Source : Symfony, « New in Symfony 8.2: More MongoDB Integrations », 23 octobre 2026. Source en anglais.