From 4abb4292ac846afc041af258231cdd8d5fcb7e65 Mon Sep 17 00:00:00 2001 From: Dave Heineman Date: Wed, 5 Jan 2022 10:33:13 +0100 Subject: [PATCH] Support redis symfony/messenger consumers --- .env | 5 ++++- .env.docker | 5 ++++- Dockerfile | 5 ++++- composer.json | 8 +++++++- composer.lock | 16 ++++++++-------- config/packages/messenger.yaml | 4 ++-- docker-compose.yml | 5 +++++ src/Service/Telemetry.php | 7 ++++--- 8 files changed, 38 insertions(+), 17 deletions(-) diff --git a/.env b/.env index 21b027f8..aead481c 100644 --- a/.env +++ b/.env @@ -41,8 +41,11 @@ DATABASE_URL=postgresql://127.0.0.1:5432/main?serverVersion=11&charset=utf8 ###> symfony/messenger ### # Choose one of the transports below # MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages -# MESSENGER_TRANSPORT_DSN=doctrine://default +# MESSENGER_TRANSPORT_FAILED_DSN=amqp://guest:guest@localhost:5672/%2f/failed +MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=false +MESSENGER_TRANSPORT_FAILED_DSN=doctrine://default?queue_name=failed&auto_setup=false # MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages +# MESSENGER_TRANSPORT_FAILED_DSN=redis://localhost:6379/failed ###< symfony/messenger ### ###> symfony/mailer ### diff --git a/.env.docker b/.env.docker index bf92fc35..6528ca74 100644 --- a/.env.docker +++ b/.env.docker @@ -45,8 +45,11 @@ DATABASE_URL=postgresql://main:main@database:5432/main?serverVersion=11&charset= ###> symfony/messenger ### # Choose one of the transports below # MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages -# MESSENGER_TRANSPORT_DSN=doctrine://default +# MESSENGER_TRANSPORT_FAILED_DSN=amqp://guest:guest@localhost:5672/%2f/failed +MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=false +MESSENGER_TRANSPORT_FAILED_DSN=doctrine://default?queue_name=failed&auto_setup=false # MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages +# MESSENGER_TRANSPORT_FAILED_DSN=redis://localhost:6379/failed ###< symfony/messenger ### ###> symfony/mailer ### diff --git a/Dockerfile b/Dockerfile index 9dfbcc94..9dcfa969 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ ARG TIMEZONE="UTC" SHELL ["sh", "-eo", "pipefail", "-c"] -# install composer and extensions: pdo_pgsql, intl, zip +# install composer and extensions: pdo_pgsql, redis, intl, zip RUN apk update && \ apk add --no-cache -q \ $PHPIZE_DEPS \ @@ -17,6 +17,8 @@ RUN apk update && \ icu-dev \ libzip-dev \ openssh-client \ + && pecl install \ + redis \ && \ curl -sS https://getcomposer.org/installer | \ php -- --install-dir=/usr/local/bin --filename=composer && \ @@ -26,6 +28,7 @@ RUN apk update && \ docker-php-ext-install pdo_pgsql && \ docker-php-ext-install intl && \ docker-php-ext-install zip && \ + docker-php-ext-enable redis.so && \ rm -rf /var/cache/apk/* # set timezone diff --git a/composer.json b/composer.json index d4276aa2..6cd5fb77 100644 --- a/composer.json +++ b/composer.json @@ -67,6 +67,7 @@ "symfony/messenger": "5.3.*", "symfony/monolog-bundle": "^3.5", "symfony/process": "5.3.*", + "symfony/redis-messenger": "5.3.*", "symfony/security-bundle": "5.3.*", "symfony/twig-bundle": "5.3.*", "symfony/validator": "5.3.*", @@ -113,7 +114,12 @@ "preferred-install": { "*": "dist" }, - "sort-packages": true + "sort-packages": true, + "allow-plugins": { + "composer/package-versions-deprecated": true, + "phpstan/extension-installer": true, + "symfony/flex": true + } }, "extra": { "symfony": { diff --git a/composer.lock b/composer.lock index 19e97271..bf958bb8 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7631696c61c53f4b9bb71444acb03d6e", + "content-hash": "c3d383497c2cadc746746951f9d06538", "packages": [ { "name": "async-aws/core", @@ -11770,16 +11770,16 @@ }, { "name": "symfony/redis-messenger", - "version": "v5.3.10", + "version": "v5.3.13", "source": { "type": "git", "url": "https://github.com/symfony/redis-messenger.git", - "reference": "94ba9b20a7f2b28ec9e93823d7912ced0108b398" + "reference": "56626720a8802ca3bb8303f5ba2115bde21dec74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/94ba9b20a7f2b28ec9e93823d7912ced0108b398", - "reference": "94ba9b20a7f2b28ec9e93823d7912ced0108b398", + "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/56626720a8802ca3bb8303f5ba2115bde21dec74", + "reference": "56626720a8802ca3bb8303f5ba2115bde21dec74", "shasum": "", "mirrors": [ { @@ -11823,7 +11823,7 @@ "description": "Symfony Redis extension Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/redis-messenger/tree/v5.3.10" + "source": "https://github.com/symfony/redis-messenger/tree/v5.3.13" }, "funding": [ { @@ -11839,7 +11839,7 @@ "type": "tidelift" } ], - "time": "2021-10-25T14:58:02+00:00" + "time": "2021-12-28T17:08:14+00:00" }, { "name": "symfony/routing", @@ -17318,5 +17318,5 @@ "ext-zip": "*" }, "platform-dev": [], - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.2.0" } diff --git a/config/packages/messenger.yaml b/config/packages/messenger.yaml index b043dbc9..344db179 100644 --- a/config/packages/messenger.yaml +++ b/config/packages/messenger.yaml @@ -8,8 +8,8 @@ framework: failure_transport: failed transports: - async: 'doctrine://default?auto_setup=false' - failed: 'doctrine://default?queue_name=failed&auto_setup=false' + async: '%env(MESSENGER_TRANSPORT_DSN)%' + failed: '%env(MESSENGER_TRANSPORT_FAILED_DSN)%' routing: 'Buddy\Repman\Message\Organization\SynchronizePackage': async diff --git a/docker-compose.yml b/docker-compose.yml index 79090114..b8fb656c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,6 +16,10 @@ services: volumes: - postgres-data:/var/lib/postgresql/data + redis: + << : *restart_policy + image: redis:6.2-alpine + app: << : *restart_policy image: buddy/repman:1.3.4 @@ -34,6 +38,7 @@ services: - app-public:/app/public depends_on: - database + - redis consumer: << : *restart_policy diff --git a/src/Service/Telemetry.php b/src/Service/Telemetry.php index 247ef315..94dcdf4a 100644 --- a/src/Service/Telemetry.php +++ b/src/Service/Telemetry.php @@ -17,6 +17,7 @@ use Buddy\Repman\Service\Telemetry\TechnicalEmail; use Ramsey\Uuid\Uuid; use Symfony\Component\Messenger\Transport\Receiver\MessageCountAwareInterface; +use Symfony\Component\Messenger\Transport\TransportInterface; final class Telemetry { @@ -24,10 +25,10 @@ final class Telemetry private TelemetryQuery $query; private Endpoint $endpoint; private Config $config; - private MessageCountAwareInterface $failedTransport; + private TransportInterface $failedTransport; private ProxyRegister $proxies; - public function __construct(string $instanceIdFile, TelemetryQuery $query, Endpoint $endpoint, Config $config, MessageCountAwareInterface $failedTransport, ProxyRegister $proxies) + public function __construct(string $instanceIdFile, TelemetryQuery $query, Endpoint $endpoint, Config $config, TransportInterface $failedTransport, ProxyRegister $proxies) { $this->instanceIdFile = $instanceIdFile; $this->query = $query; @@ -70,7 +71,7 @@ public function collectAndSend(\DateTimeImmutable $date): void sprintf('%s %s', php_uname('s'), php_uname('r')), PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION.'.'.PHP_RELEASE_VERSION, $this->query->usersCount(), - $this->failedTransport->getMessageCount(), + ($this->failedTransport instanceof MessageCountAwareInterface) ? $this->failedTransport->getMessageCount() : 0, $this->getConfig(), ), $this->getOrganizations($date),