Messenger Flashcards
(35 cards)
Quels sont les 2 composantes essentiels de Messenger
une class Message (data) + une class Handler (read data + process)
quels sont les composantes d’une class Message Handler de Messenger
doit être Callable (__invoke()) + Attribute #[AsMessageHandler]
comment lister tous les Messenger Handler
php bin/console debug:messenger
comment procéder pour envoyer un message
utiliser le service MessageBusInterface avec la methode dispatch() et en argument la class Message (le handler sera ensuite invoker)
que fait-il faire pour faire du Messenger Async
utiliser un Transports (send to queueing + receive via worker)
comment est enregistrer un Messenger
par une config DSN
comment est configurer un Messenger
config/packages/messenger.yaml (framework:messenger:transports)
comment déclarer un message en Async
framework:messenger:routing:’ClassMessage’: async
quel probleme doit etre eviter quand on utilise l’héritage de class Messenger
si on déclare à la fois le parent et le child d’un message alors il sera expédié 2 fois
Que faut-il éviter de faire si on souhaite travailler avec une Entity pour data d’un Message
ne pas envoyer l’objet entity tel quel mais uniquement son ID et c’est le handler qui sera en charge de le reloader avec son ID.
comment lancer le worker SF pour les messages
php bin/console messenger:consume async
a quoi faut-il faire attention avec le worker messenger SF en prod
1/ ne pas le laisser run forever 2/ utiliser un process control pour gérer les workers (supervisor ou systemd) 3/ stopper les workers si errors 4/restart workers on deploy 5/ use same cache namespace between deploy
comment gérer la priorité entre des messages
il faut créer des transport différents tagger par des priorités différentes et ensuite déclarer les messages suivant ces tag de transport priorité
comment consume unique les messages de haut priorité
php bin/console messenger/consume async_priority_high
a quoi est lié le transport SF par rapport au broker
SF transport est lié par l’exchange du broker
que fais par defaut le worker SF par rapport au broker
il consume toutes les queues de l’exchange
Comment dire à SF worker de ne consume que les messages de certaines queue de l’exchange
pgp bin/console messenger:consume my_transport –queus=fasttrack
comment obtenir des stats par rapport au worker
php bin/console messenger:stats
comment faire un sorte d’avoir un worker Stateless qui ne conserve pas de state de service SF entre chaq message
il faut faire en sorte que les services impl l’I ResetInterface et call la methode reset() entre chq message
Comment gérer les error d’envoi de messages
utiliser une “retry_strategy” dans la config avec les options suivantes : max_retries, delay, multiplier, max_delay, jitter
Comment éviter de retry une error d’envoi de message
il faut lancer une exception “RecoverableMessageHandlingException”
comment gérer les messages qui sont en error au max_retries
il faut créer un transport spécial error pour pouvoir les gérer
comment passer des options de transport DSN
dans la string DSN directement ou dans la config
comment passer des options supplémentaires spécifique à un message
dans le message meme il faut utiliser AmqpStamp class