Il s'agit d'une série sur la création et la gestion de tâches d'arrière-plan asynchrones dans Symfony à l'aide du composant Messenger. Dans la partie 1, nous commencerons par examiner le problème que les files d'attente de messages asynchrones peuvent résoudre pour nous et nous verrons également ce que nous allons construire.
Messenger fournit un bus de messages avec la possibilité d'envoyer des messages, puis de les gérer immédiatement dans votre application ou de les envoyer via des transports (par exemple, des files d'attente) pour qu'ils soient traités ultérieurement.
Install all dependencies via composer
:
$ composer install
Run the project:
$ php -S localhost:8000 -t public/
or
$ symfony server:start -d
Run Mailer
symfony open:local:webmail
Consume messanger
symfony console messenger:consume async -vv
forcer une error dans le fichier OrderSavedHandler pour bloquer la consomation des message // Attemt to retrieve an order from MongoDB throw new \RuntimeException('ORDER COULD Not BE FOUND)
symfony console messenger:consume async -vv`
CRITICAL [messenger] Error thrown while handling message App\Message\Event\OrderSavedEvent. Removing from transport after 3 retries. Error: "Handling "App\Message\Event\OrderSavedEvent" failed: ORDER COULD NOT BE FOUND bhh ...!!"
symfony console debug:config FrameworkBundle messenger
symfony console messenger:failed:show -vv
symfony console messenger:failed:retry -vv
symfony console messenger:failed:retry 20 30 --force
symfony console messenger:failed:remove 20
Then access the application in your browser at the given URL (https://localhost:8000 by default).
Execute this command to run tests:
$ cd my_project/
$ ./bin/phpunit