Messenger Flashcards

1
Q

Quels sont les 2 composantes essentiels de Messenger

A

une class Message (data) + une class Handler (read data + process)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

quels sont les composantes d’une class Message Handler de Messenger

A

doit être Callable (__invoke()) + Attribute #[AsMessageHandler]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

comment lister tous les Messenger Handler

A

php bin/console debug:messenger

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

comment procéder pour envoyer un message

A

utiliser le service MessageBusInterface avec la methode dispatch() et en argument la class Message (le handler sera ensuite invoker)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

que fait-il faire pour faire du Messenger Async

A

utiliser un Transports (send to queueing + receive via worker)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

comment est enregistrer un Messenger

A

par une config DSN

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

comment est configurer un Messenger

A

config/packages/messenger.yaml (framework:messenger:transports)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

comment déclarer un message en Async

A

framework:messenger:routing:’ClassMessage’: async

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

quel probleme doit etre eviter quand on utilise l’héritage de class Messenger

A

si on déclare à la fois le parent et le child d’un message alors il sera expédié 2 fois

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Que faut-il éviter de faire si on souhaite travailler avec une Entity pour data d’un Message

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

comment lancer le worker SF pour les messages

A

php bin/console messenger:consume async

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

a quoi faut-il faire attention avec le worker messenger SF en prod

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

comment gérer la priorité entre des messages

A

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é

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

comment consume unique les messages de haut priorité

A

php bin/console messenger/consume async_priority_high

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

a quoi est lié le transport SF par rapport au broker

A

SF transport est lié par l’exchange du broker

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

que fais par defaut le worker SF par rapport au broker

A

il consume toutes les queues de l’exchange

17
Q

Comment dire à SF worker de ne consume que les messages de certaines queue de l’exchange

A

pgp bin/console messenger:consume my_transport –queus=fasttrack

18
Q

comment obtenir des stats par rapport au worker

A

php bin/console messenger:stats

19
Q

comment faire un sorte d’avoir un worker Stateless qui ne conserve pas de state de service SF entre chaq message

A

il faut faire en sorte que les services impl l’I ResetInterface et call la methode reset() entre chq message

20
Q

Comment gérer les error d’envoi de messages

A

utiliser une “retry_strategy” dans la config avec les options suivantes : max_retries, delay, multiplier, max_delay, jitter

21
Q

Comment éviter de retry une error d’envoi de message

A

il faut lancer une exception “RecoverableMessageHandlingException”

22
Q

comment gérer les messages qui sont en error au max_retries

A

il faut créer un transport spécial error pour pouvoir les gérer

23
Q

comment passer des options de transport DSN

A

dans la string DSN directement ou dans la config

24
Q

comment passer des options supplémentaires spécifique à un message

A

dans le message meme il faut utiliser AmqpStamp class

25
Q

comment utiliser Doctrine avec messenger

A

avec le bundle symfony/doctrine-messenger

26
Q

comment Trigger une command avec un message SF

A

dans le dispatcher il faut utiliser un obj RunCommandMessage

27
Q

comment Trigger un process system avec un message SF

A

dans le dispatcher il faut utiliser un obj RunProcessMessage

28
Q

comment Trigger un ping de WS avec un message SF

A

dans le dispatcher il faut utiliser un obj PingWebhookMessage

29
Q

est-il possible de faire du transactionnal message

A

oui un handler de message peut également dispatch de new message à son tour

30
Q

comment process many message with batch

A

en extends BatchHandlerInterface et use BatchHandlerTrait

31
Q

comment ajouter un delay de process coté broker pour un message

A

en ajoutant un DelayStamp au message (info qui se traité par le broker)

32
Q

quel sont les 9 Event pouvant être listener en rapport à Messenger

A

SendMessageToTransportEvent, WorkerMessageFailedEvent, WorkerMessageHandledEvent, WorkerMessageReceivedEvent, WorkerMEssageRetriedEvent, WorkerRateLimited, WorkerRunningEvent, WorkerStartedEvent, WorkerStoppedEvent

33
Q

comment faire si le message receptionné par le handler n’est pas du format classique JSON

A

il faut utiliser un serializer dédié

34
Q

que doit-on faire si on veut faire du CQRS avec messenger

A

séparer les Bus Message en 3 : Command, Query & Event

35
Q

comment redispatcher un message dans le handler

A

il faut utiliser la Class RedispatchMessage