symfony messenger • Comment gérer les traitement lourds, et les traitements en arrière plan • Qu'est-ce qu'un Message Queue • Symfony messenger en détail • Demo: Refactoring d’une api de réservation.
outil maintenu par le Core Team Symfony • Mieux communiquer à travers des messages • Brancher un système de queuing • Très bonne expérience développeur • Des fonctionnalités de routage à travers des middleware pour intercepter les messages et les router vers le bon Transport. • Recommandé par IBEXA XD
traitements de messagerie? • Comment mettre un système de file d’attente? • Pourquoi ne pas utiliser l’event dispatcher? • Gérer les problèmes de ressources et de scalabilité!
est asynchrone. • Fiabilité des échanges. • Évolutivité et les performances. • La persistance • Contrôle, traçabilité • Découplage • La scalabilité et haute disponibilité
factures • Envoie des mails • Importer des contenus eZ, why not! • RGPD, Télécharger des informations confidentiels. • Un site e-commerce le passage d’une commande 1. Changer le statut de sa commande 2. Mettre à jour les stocks 3. Envoyer un email de confirmation au client 4. Prévenir le service de préparation de cette nouvelle commande 5. Envoyer des metrics pour suivre le volume des ventes
Messenger - PSR14 (dispatcher function) - Event sourcing pattern - Synch - Un feedback instantané $eventDispatcher->dispatch() (expecting an instance of the event class ) - PSR14 - Event sourcing pattern - Asynch (Traitement lourd) - Later (ack) - $messenger->dispatch() (expecting an instance of the message class ) Scalabilité, performance, persistance, une bonne gestion des erreurs.,
• Message : Un objet DTO serializable, notre Commande. • Enveloppe: metadata, stamps. • Bus : collections de middlewares CommandBus, QueryBus, EventBus: La plupart des gens utilisent Messenger comme un "bus de commande". • Midelwars: dispatcher le message, sérialisation/désérialisation, exécuter le handler approprié. (senderMidellware / Handler Middleware) • Handler(worker) : La classe qui va recevoir un message à exécuter. • Transport: Il permet de faire transiter les messages via différents broker. • Receiver : Deserialize le message reçu via le bus et le transmet au bon handler. • Sender : Serialize le message et le transmet au queue manager via le bus. • Data collector : une service for debugging on DEV permet d’avoir les messages dispatché sur le profiler