From e3a38a5428d9fcba0775f32a78a80a1e0c0c3285 Mon Sep 17 00:00:00 2001 From: Maxime Veber <nek.dev@gmail.com> Date: Mon, 10 May 2021 23:55:35 +0200 Subject: [PATCH] add stuff --- .env | 7 + composer.json | 6 +- composer.lock | 540 +++++++++++++++++- config/bundles.php | 1 + config/packages/messenger.yaml | 14 + src/Command/GenMessagesCommand.php | 56 ++ src/Message/PerfTestMessage.php | 23 + src/MessageHandler/PerfTestMessageHandler.php | 14 + symfony.lock | 36 ++ 9 files changed, 692 insertions(+), 5 deletions(-) create mode 100644 config/packages/messenger.yaml create mode 100644 src/Command/GenMessagesCommand.php create mode 100644 src/Message/PerfTestMessage.php create mode 100644 src/MessageHandler/PerfTestMessageHandler.php diff --git a/.env b/.env index fc9c135..f557396 100644 --- a/.env +++ b/.env @@ -17,3 +17,10 @@ APP_ENV=dev APP_SECRET=a19f0835963f9d59bd9c986b287e9fa3 ###< symfony/framework-bundle ### + +###> symfony/messenger ### +# Choose one of the transports below +# MESSENGER_TRANSPORT_DSN=doctrine://default +MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages +# MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages +###< symfony/messenger ### diff --git a/composer.json b/composer.json index a95524c..2287baa 100644 --- a/composer.json +++ b/composer.json @@ -4,17 +4,17 @@ "minimum-stability": "dev", "prefer-stable": true, "require": { - "php": ">=7.2.5", + "php": ">=8.0.0", "ext-ctype": "*", "ext-iconv": "*", "symfony/console": "5.2.*", "symfony/dotenv": "5.2.*", "symfony/flex": "^1.3.1", "symfony/framework-bundle": "5.2.*", + "symfony/maker-bundle": "^1.31", + "symfony/messenger": "5.2.*", "symfony/yaml": "5.2.*" }, - "require-dev": { - }, "config": { "optimize-autoloader": true, "preferred-install": { diff --git a/composer.lock b/composer.lock index e84f222..de3c410 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,159 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ddab81359814b88dad27a2f6d961a375", + "content-hash": "e8c28de4a7e277065c3d75912e4cfabc", "packages": [ + { + "name": "doctrine/inflector", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210", + "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^7.0", + "phpstan/phpstan": "^0.11", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-strict-rules": "^0.11", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.x" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2020-05-29T15:13:26+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.10.5", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "4432ba399e47c66624bc73c8c0f811e5c109576f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4432ba399e47c66624bc73c8c0f811e5c109576f", + "reference": "4432ba399e47c66624bc73c8c0f811e5c109576f", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.5" + }, + "time": "2021-05-03T19:11:20+00:00" + }, { "name": "psr/cache", "version": "2.0.0", @@ -203,6 +354,75 @@ }, "time": "2021-05-03T11:20:27+00:00" }, + { + "name": "symfony/amqp-messenger", + "version": "v5.2.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/amqp-messenger.git", + "reference": "2dbdde5e095c1ee8df84560db5bdd4e7e48cbeac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/2dbdde5e095c1ee8df84560db5bdd4e7e48cbeac", + "reference": "2dbdde5e095c1ee8df84560db5bdd4e7e48cbeac", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/messenger": "^5.1" + }, + "require-dev": { + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/property-access": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Component\\Messenger\\Bridge\\Amqp\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony AMQP extension Messenger Bridge", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/amqp-messenger/tree/v5.2.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-04-07T16:27:53+00:00" + }, { "name": "symfony/cache", "version": "v5.2.7", @@ -706,6 +926,79 @@ ], "time": "2021-03-23T23:28:01+00:00" }, + { + "name": "symfony/doctrine-messenger", + "version": "v5.2.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/doctrine-messenger.git", + "reference": "f5544cd4a5d06ffb75a09c6cde099d22cd0e1255" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/f5544cd4a5d06ffb75a09c6cde099d22cd0e1255", + "reference": "f5544cd4a5d06ffb75a09c6cde099d22cd0e1255", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/messenger": "^5.1", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "doctrine/dbal": "<2.10", + "doctrine/persistence": "<1.3" + }, + "require-dev": { + "doctrine/dbal": "^2.10|^3.0", + "doctrine/persistence": "^1.3|^2", + "symfony/property-access": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Component\\Messenger\\Bridge\\Doctrine\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Doctrine Messenger Bridge", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/doctrine-messenger/tree/v5.3.0-BETA1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-04-07T16:27:53+00:00" + }, { "name": "symfony/dotenv", "version": "v5.2.4", @@ -1612,6 +1905,182 @@ ], "time": "2021-05-01T14:53:15+00:00" }, + { + "name": "symfony/maker-bundle", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/maker-bundle.git", + "reference": "d01a475fb9a96a46d0c75dbc7fae6eb9a8c85ddb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/d01a475fb9a96a46d0c75dbc7fae6eb9a8c85ddb", + "reference": "d01a475fb9a96a46d0c75dbc7fae6eb9a8c85ddb", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^1.2|^2.0", + "nikic/php-parser": "^4.0", + "php": ">=7.1.3", + "symfony/config": "^4.0|^5.0", + "symfony/console": "^4.0|^5.0", + "symfony/dependency-injection": "^4.0|^5.0", + "symfony/deprecation-contracts": "^2.2", + "symfony/filesystem": "^4.0|^5.0", + "symfony/finder": "^4.0|^5.0", + "symfony/framework-bundle": "^4.0|^5.0", + "symfony/http-kernel": "^4.0|^5.0" + }, + "require-dev": { + "composer/semver": "^3.0@dev", + "doctrine/doctrine-bundle": "^1.8|^2.0", + "doctrine/orm": "^2.3", + "friendsofphp/php-cs-fixer": "^3.0", + "friendsoftwig/twigcs": "^4.1.0|^5.0.0", + "symfony/http-client": "^4.3|^5.0", + "symfony/phpunit-bridge": "^4.3|^5.0", + "symfony/process": "^4.0|^5.0", + "symfony/security-core": "^4.0|^5.0", + "symfony/yaml": "^4.0|^5.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-main": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\MakerBundle\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.", + "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html", + "keywords": [ + "code generator", + "generator", + "scaffold", + "scaffolding" + ], + "support": { + "issues": "https://github.com/symfony/maker-bundle/issues", + "source": "https://github.com/symfony/maker-bundle/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-05T18:41:31+00:00" + }, + { + "name": "symfony/messenger", + "version": "v5.2.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/messenger.git", + "reference": "91c9283dab9294d30e55bd9697f5a7527b3fef3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/messenger/zipball/91c9283dab9294d30e55bd9697f5a7527b3fef3e", + "reference": "91c9283dab9294d30e55bd9697f5a7527b3fef3e", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/log": "~1.0", + "symfony/amqp-messenger": "^5.1", + "symfony/deprecation-contracts": "^2.1", + "symfony/doctrine-messenger": "^5.1", + "symfony/polyfill-php80": "^1.15", + "symfony/redis-messenger": "^5.1" + }, + "conflict": { + "symfony/event-dispatcher": "<4.4", + "symfony/framework-bundle": "<4.4", + "symfony/http-kernel": "<4.4" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/property-access": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/validator": "^4.4|^5.0" + }, + "suggest": { + "enqueue/messenger-adapter": "For using the php-enqueue library as a transport." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Messenger\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Samuel Roze", + "email": "samuel.roze@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps applications send and receive messages to/from other applications or via message queues", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/messenger/tree/v5.2.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-04-08T10:27:02+00:00" + }, { "name": "symfony/polyfill-intl-grapheme", "version": "v1.22.1", @@ -2019,6 +2488,73 @@ ], "time": "2021-01-07T16:49:33+00:00" }, + { + "name": "symfony/redis-messenger", + "version": "v5.2.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/redis-messenger.git", + "reference": "70c0adb4edd401ed97fbe88568e16381c13a69d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/70c0adb4edd401ed97fbe88568e16381c13a69d2", + "reference": "70c0adb4edd401ed97fbe88568e16381c13a69d2", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/messenger": "^5.1" + }, + "require-dev": { + "symfony/property-access": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Component\\Messenger\\Bridge\\Redis\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Redis extension Messenger Bridge", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/redis-messenger/tree/v5.2.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-04-07T16:07:52+00:00" + }, { "name": "symfony/routing", "version": "v5.2.7", @@ -2514,7 +3050,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=7.2.5", + "php": ">=8.0.0", "ext-ctype": "*", "ext-iconv": "*" }, diff --git a/config/bundles.php b/config/bundles.php index 49d3fb6..ffeb861 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -2,4 +2,5 @@ return [ Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], + Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], ]; diff --git a/config/packages/messenger.yaml b/config/packages/messenger.yaml new file mode 100644 index 0000000..eb2dc6e --- /dev/null +++ b/config/packages/messenger.yaml @@ -0,0 +1,14 @@ +framework: + messenger: + # Uncomment this (and the failed transport below) to send failed messages to this transport for later handling. + # failure_transport: failed + + transports: + # https://symfony.com/doc/current/messenger.html#transport-configuration + async: '%env(MESSENGER_TRANSPORT_DSN)%' + # failed: 'doctrine://default?queue_name=failed' + # sync: 'sync://' + + routing: + # Route your messages to the transports + 'App\Message\PerfTestMessage': async diff --git a/src/Command/GenMessagesCommand.php b/src/Command/GenMessagesCommand.php new file mode 100644 index 0000000..a8718dd --- /dev/null +++ b/src/Command/GenMessagesCommand.php @@ -0,0 +1,56 @@ +<?php + +namespace App\Command; + +use App\Message\PerfTestMessage; +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Console\Style\SymfonyStyle; +use Symfony\Component\Messenger\MessageBus; +use Symfony\Component\Messenger\MessageBusInterface; + +class GenMessagesCommand extends Command +{ + protected static $defaultName = 'app:gen-messages'; + protected static $defaultDescription = 'Messages messages messages'; + + /** + * GenMessagesCommand constructor. + */ + public function __construct(private MessageBusInterface $bus, string $name = null) { + parent::__construct($name); + } + + protected function configure(): void + { + $this + ->setDescription(self::$defaultDescription) + ->addArgument('nb', InputArgument::OPTIONAL, 'Numbers of messages', 10000) +// ->addOption('option1', null, InputOption::VALUE_NONE, 'Option description') + ; + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + $io = new SymfonyStyle($input, $output); + $number = (int) $input->getArgument('nb'); +// +// if ($arg1) { +// $io->note(sprintf('You passed an argument: %s', $arg1)); +// } +// +// if ($input->getOption('option1')) { +// // ... +// } + for($i = 0; $i < $number; $i++) { + $this->bus->dispatch(new PerfTestMessage()); + } + + $io->success("Sended $number messages."); + + return Command::SUCCESS; + } +} diff --git a/src/Message/PerfTestMessage.php b/src/Message/PerfTestMessage.php new file mode 100644 index 0000000..7d2f6dc --- /dev/null +++ b/src/Message/PerfTestMessage.php @@ -0,0 +1,23 @@ +<?php + +namespace App\Message; + +final class PerfTestMessage +{ + /* + * Add whatever properties & methods you need to hold the + * data for this message class. + */ + +// private $name; +// +// public function __construct(string $name) +// { +// $this->name = $name; +// } +// +// public function getName(): string +// { +// return $this->name; +// } +} diff --git a/src/MessageHandler/PerfTestMessageHandler.php b/src/MessageHandler/PerfTestMessageHandler.php new file mode 100644 index 0000000..6c549bb --- /dev/null +++ b/src/MessageHandler/PerfTestMessageHandler.php @@ -0,0 +1,14 @@ +<?php + +namespace App\MessageHandler; + +use App\Message\PerfTestMessage; +use Symfony\Component\Messenger\Handler\MessageHandlerInterface; + +final class PerfTestMessageHandler implements MessageHandlerInterface +{ + public function __invoke(PerfTestMessage $message) + { + // Doing nothing. + } +} diff --git a/symfony.lock b/symfony.lock index 9a5bbf3..3162f3e 100644 --- a/symfony.lock +++ b/symfony.lock @@ -1,4 +1,10 @@ { + "doctrine/inflector": { + "version": "2.0.3" + }, + "nikic/php-parser": { + "version": "v4.10.5" + }, "psr/cache": { "version": "2.0.0" }, @@ -11,6 +17,9 @@ "psr/log": { "version": "1.1.4" }, + "symfony/amqp-messenger": { + "version": "v5.2.7" + }, "symfony/cache": { "version": "v5.2.7" }, @@ -38,6 +47,9 @@ "symfony/deprecation-contracts": { "version": "v2.4.0" }, + "symfony/doctrine-messenger": { + "version": "v5.2.7" + }, "symfony/dotenv": { "version": "v5.2.4" }, @@ -97,6 +109,27 @@ "symfony/http-kernel": { "version": "v5.2.7" }, + "symfony/maker-bundle": { + "version": "1.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f" + } + }, + "symfony/messenger": { + "version": "4.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.3", + "ref": "e9a414b113ceadbf4e52abe37bf8f1b443f06ccb" + }, + "files": [ + "config/packages/messenger.yaml" + ] + }, "symfony/polyfill-intl-grapheme": { "version": "v1.22.1" }, @@ -112,6 +145,9 @@ "symfony/polyfill-php80": { "version": "v1.22.1" }, + "symfony/redis-messenger": { + "version": "v5.2.7" + }, "symfony/routing": { "version": "5.1", "recipe": { -- GitLab