veilletech.fr
24 oct. Feed du jour
#05 SYMFONY Article

Symfony 8.2 : MongoDB pour le cache et Messenger

Un service de moins à exploiter, si MongoDB est déjà là.

Symfony 8.2 ajoute MongoDB au composant Cache (MongoDbAdapter, MongoDbTagAwareAdapter) et à Messenger (transport fondé sur facile-it/mongodb-messenger-transport), en plus des sessions et des verrous déjà pris en charge. Le transport lit plusieurs files en une requête et permet d'enregistrer un message dans la même transaction que les données.

2 min de lectureintermédiairevidéo 1:27
Partager
Sommaire6 sections
  1. Ce qui se passe
  2. Le cache
  3. Le transport Messenger
  4. Lire plusieurs files d'un coup
  5. Comment s'y prendre
  6. À retenir

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.

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://.

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.