|
| 1 | +<?php |
| 2 | + |
| 3 | +/* |
| 4 | + * This file is part of the Symfony package. |
| 5 | + * |
| 6 | + * (c) Fabien Potencier <fabien@symfony.com> |
| 7 | + * |
| 8 | + * For the full copyright and license information, please view the LICENSE |
| 9 | + * file that was distributed with this source code. |
| 10 | + */ |
| 11 | + |
| 12 | +namespace Symfony\Component\DependencyInjection\Loader\Configurator; |
| 13 | + |
| 14 | +use Symfony\Component\Messenger\Bridge\AmazonSqs\Transport\AmazonSqsTransportFactory; |
| 15 | +use Symfony\Component\Messenger\Bridge\Amqp\Transport\AmqpTransportFactory; |
| 16 | +use Symfony\Component\Messenger\Bridge\Redis\Transport\RedisTransportFactory; |
| 17 | +use Symfony\Component\Messenger\EventListener\DispatchPcntlSignalListener; |
| 18 | +use Symfony\Component\Messenger\EventListener\SendFailedMessageForRetryListener; |
| 19 | +use Symfony\Component\Messenger\EventListener\SendFailedMessageToFailureTransportListener; |
| 20 | +use Symfony\Component\Messenger\EventListener\StopWorkerOnRestartSignalListener; |
| 21 | +use Symfony\Component\Messenger\EventListener\StopWorkerOnSigtermSignalListener; |
| 22 | +use Symfony\Component\Messenger\Middleware\AddBusNameStampMiddleware; |
| 23 | +use Symfony\Component\Messenger\Middleware\DispatchAfterCurrentBusMiddleware; |
| 24 | +use Symfony\Component\Messenger\Middleware\FailedMessageProcessingMiddleware; |
| 25 | +use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware; |
| 26 | +use Symfony\Component\Messenger\Middleware\RejectRedeliveredMessageMiddleware; |
| 27 | +use Symfony\Component\Messenger\Middleware\SendMessageMiddleware; |
| 28 | +use Symfony\Component\Messenger\Middleware\TraceableMiddleware; |
| 29 | +use Symfony\Component\Messenger\Middleware\ValidationMiddleware; |
| 30 | +use Symfony\Component\Messenger\Retry\MultiplierRetryStrategy; |
| 31 | +use Symfony\Component\Messenger\RoutableMessageBus; |
| 32 | +use Symfony\Component\Messenger\Transport\InMemoryTransportFactory; |
| 33 | +use Symfony\Component\Messenger\Transport\Sender\SendersLocator; |
| 34 | +use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer; |
| 35 | +use Symfony\Component\Messenger\Transport\Serialization\Serializer; |
| 36 | +use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface; |
| 37 | +use Symfony\Component\Messenger\Transport\Sync\SyncTransportFactory; |
| 38 | +use Symfony\Component\Messenger\Transport\TransportFactory; |
| 39 | + |
| 40 | +return static function (ContainerConfigurator $container) { |
| 41 | + $container->services() |
| 42 | + ->alias(SerializerInterface::class, 'messenger.default_serializer') |
| 43 | + |
| 44 | + // Asynchronous |
| 45 | + ->set('messenger.senders_locator', SendersLocator::class) |
| 46 | + ->args([ |
| 47 | + abstract_arg('per message senders map'), |
| 48 | + abstract_arg('senders service locator'), |
| 49 | + ]) |
| 50 | + ->set('messenger.middleware.send_message', SendMessageMiddleware::class) |
| 51 | + ->args([ |
| 52 | + service('messenger.senders_locator'), |
| 53 | + service('event_dispatcher'), |
| 54 | + ]) |
| 55 | + ->call('setLogger', [service('logger')->ignoreOnInvalid()]) |
| 56 | + ->tag('monolog.logger', ['channel' => 'messenger']) |
| 57 | + |
| 58 | + // Message encoding/decoding |
| 59 | + ->set('messenger.transport.symfony_serializer', Serializer::class) |
| 60 | + ->args([ |
| 61 | + service('serializer'), |
| 62 | + abstract_arg('format'), |
| 63 | + abstract_arg('context'), |
| 64 | + ]) |
| 65 | + |
| 66 | + ->set('messenger.transport.native_php_serializer', PhpSerializer::class) |
| 67 | + |
| 68 | + // Middleware |
| 69 | + ->set('messenger.middleware.handle_message', HandleMessageMiddleware::class) |
| 70 | + ->abstract() |
| 71 | + ->args([ |
| 72 | + abstract_arg('bus handler resolver'), |
| 73 | + ]) |
| 74 | + ->tag('monolog.logger', ['channel' => 'messenger']) |
| 75 | + ->call('setLogger', [service('logger')->ignoreOnInvalid()]) |
| 76 | + |
| 77 | + ->set('messenger.middleware.add_bus_name_stamp_middleware', AddBusNameStampMiddleware::class) |
| 78 | + ->abstract() |
| 79 | + |
| 80 | + ->set('messenger.middleware.dispatch_after_current_bus', DispatchAfterCurrentBusMiddleware::class) |
| 81 | + |
| 82 | + ->set('messenger.middleware.validation', ValidationMiddleware::class) |
| 83 | + ->args([ |
| 84 | + service('validator'), |
| 85 | + ]) |
| 86 | + |
| 87 | + ->set('messenger.middleware.reject_redelivered_message_middleware', RejectRedeliveredMessageMiddleware::class) |
| 88 | + |
| 89 | + ->set('messenger.middleware.failed_message_processing_middleware', FailedMessageProcessingMiddleware::class) |
| 90 | + |
| 91 | + ->set('messenger.middleware.traceable', TraceableMiddleware::class) |
| 92 | + ->abstract() |
| 93 | + ->args([ |
| 94 | + service('debug.stopwatch'), |
| 95 | + ]) |
| 96 | + |
| 97 | + // Discovery |
| 98 | + ->set('messenger.receiver_locator') |
| 99 | + ->args([ |
| 100 | + [], |
| 101 | + ]) |
| 102 | + ->tag('container.service_locator') |
| 103 | + |
| 104 | + // Transports |
| 105 | + ->set('messenger.transport_factory', TransportFactory::class) |
| 106 | + ->args([ |
| 107 | + tagged_iterator('messenger.transport_factory'), |
| 108 | + ]) |
| 109 | + |
| 110 | + ->set('messenger.transport.amqp.factory', AmqpTransportFactory::class) |
| 111 | + |
| 112 | + ->set('messenger.transport.redis.factory', RedisTransportFactory::class) |
| 113 | + |
| 114 | + ->set('messenger.transport.sync.factory', SyncTransportFactory::class) |
| 115 | + ->args([ |
| 116 | + service('messenger.routable_message_bus'), |
| 117 | + ]) |
| 118 | + ->tag('messenger.transport_factory') |
| 119 | + |
| 120 | + ->set('messenger.transport.in_memory.factory', InMemoryTransportFactory::class) |
| 121 | + ->tag('messenger.transport_factory') |
| 122 | + ->tag('kernel.reset', ['method' => 'reset']) |
| 123 | + |
| 124 | + ->set('messenger.transport.sqs.factory', AmazonSqsTransportFactory::class) |
| 125 | + |
| 126 | + // retry |
| 127 | + ->set('messenger.retry_strategy_locator') |
| 128 | + ->args([ |
| 129 | + [], |
| 130 | + ]) |
| 131 | + ->tag('container.service_locator') |
| 132 | + |
| 133 | + ->set('messenger.retry.abstract_multiplier_retry_strategy', MultiplierRetryStrategy::class) |
| 134 | + ->abstract() |
| 135 | + ->args([ |
| 136 | + abstract_arg('max retries'), |
| 137 | + abstract_arg('delay ms'), |
| 138 | + abstract_arg('multiplier'), |
| 139 | + abstract_arg('max delay ms'), |
| 140 | + ]) |
| 141 | + |
| 142 | + // worker event listener |
| 143 | + ->set('messenger.retry.send_failed_message_for_retry_listener', SendFailedMessageForRetryListener::class) |
| 144 | + ->args([ |
| 145 | + abstract_arg('senders service locator'), |
| 146 | + service('messenger.retry_strategy_locator'), |
| 147 | + service('logger')->ignoreOnInvalid(), |
| 148 | + ]) |
| 149 | + ->tag('kernel.event_subscriber') |
| 150 | + ->tag('monolog.logger', ['channel' => 'messenger']) |
| 151 | + |
| 152 | + ->set('messenger.failure.send_failed_message_to_failure_transport_listener', SendFailedMessageToFailureTransportListener::class) |
| 153 | + ->args([ |
| 154 | + abstract_arg('failure transport'), |
| 155 | + service('logger')->ignoreOnInvalid(), |
| 156 | + ]) |
| 157 | + ->tag('kernel.event_subscriber') |
| 158 | + ->tag('monolog.logger', ['channel' => 'messenger']) |
| 159 | + |
| 160 | + ->set('messenger.listener.dispatch_pcntl_signal_listener', DispatchPcntlSignalListener::class) |
| 161 | + ->tag('kernel.event_subscriber') |
| 162 | + |
| 163 | + ->set('messenger.listener.stop_worker_on_restart_signal_listener', StopWorkerOnRestartSignalListener::class) |
| 164 | + ->args([ |
| 165 | + service('cache.messenger.restart_workers_signal'), |
| 166 | + service('logger')->ignoreOnInvalid(), |
| 167 | + ]) |
| 168 | + ->tag('kernel.event_subscriber') |
| 169 | + ->tag('monolog.logger', ['channel' => 'messenger']) |
| 170 | + |
| 171 | + ->set('messenger.listener.stop_worker_on_sigterm_signal_listener', StopWorkerOnSigtermSignalListener::class) |
| 172 | + ->tag('kernel.event_subscriber') |
| 173 | + |
| 174 | + ->set('messenger.routable_message_bus', RoutableMessageBus::class) |
| 175 | + ->args([ |
| 176 | + abstract_arg('message bus locator'), |
| 177 | + service('messenger.default_bus'), |
| 178 | + ]) |
| 179 | + ; |
| 180 | +}; |
0 commit comments