|
| 1 | +<?php |
| 2 | + |
| 3 | +declare(strict_types=1); |
| 4 | + |
| 5 | +use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; |
| 6 | +use Symfony\Component\Mailer\Messenger\SendEmailMessage; |
| 7 | +use Symfony\Config\Framework\Messenger\RoutingConfig; |
| 8 | +use Symfony\Config\Framework\Messenger\TransportConfig; |
| 9 | +use Symfony\Config\FrameworkConfig; |
| 10 | + |
| 11 | +use function Symfony\Component\DependencyInjection\Loader\Configurator\env; |
| 12 | + |
| 13 | +return static function (ContainerConfigurator $containerConfigurator, FrameworkConfig $frameworkConfig): void { |
| 14 | + $messenger = $frameworkConfig->messenger(); |
| 15 | + |
| 16 | + $messenger->failureTransport('failed'); |
| 17 | + |
| 18 | + $asyncTransport = $messenger->transport('async'); |
| 19 | + assert($asyncTransport instanceof TransportConfig); |
| 20 | + $asyncTransport->dsn(env('MESSENGER_TRANSPORT_DSN')); |
| 21 | + /* @phpstan-ignore-next-line argument.type https://github.com/symfony/symfony/issues/18988 */ |
| 22 | + $asyncTransport->options([ |
| 23 | + 'use_notify' => true, |
| 24 | + 'check_delayed_interval' => 60000, |
| 25 | + ]); |
| 26 | + $asyncTransport->retryStrategy() |
| 27 | + ->maxRetries(3) |
| 28 | + ->multiplier(2); |
| 29 | + |
| 30 | + $failedTransport = $messenger->transport('failed'); |
| 31 | + assert($failedTransport instanceof TransportConfig); |
| 32 | + $failedTransport->dsn('doctrine://default?queue_name=failed'); |
| 33 | + |
| 34 | + $messenger->bus('messenger.bus.default'); |
| 35 | + $messenger->defaultBus('messenger.bus.default'); |
| 36 | + |
| 37 | + $routingConfig = $messenger->routing(SendEmailMessage::class); |
| 38 | + assert($routingConfig instanceof RoutingConfig); |
| 39 | + $routingConfig->senders(['async']); |
| 40 | +}; |
0 commit comments