Skip to content

Commit 77ac4f8

Browse files
hyoanicolas-grekas
authored andcommitted
[FrameworkBundle] changed configuration file for messenger from xml to php
1 parent 8e9a1eb commit 77ac4f8

File tree

5 files changed

+211
-154
lines changed

5 files changed

+211
-154
lines changed

DependencyInjection/FrameworkExtension.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@
8888
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
8989
use Symfony\Component\Messenger\MessageBus;
9090
use Symfony\Component\Messenger\MessageBusInterface;
91+
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
9192
use Symfony\Component\Messenger\Transport\TransportFactoryInterface;
9293
use Symfony\Component\Messenger\Transport\TransportInterface;
9394
use Symfony\Component\Mime\Header\Headers;
@@ -319,7 +320,7 @@ public function load(array $configs, ContainerBuilder $container)
319320
}
320321

321322
if ($this->messengerConfigEnabled = $this->isConfigEnabled($container, $config['messenger'])) {
322-
$this->registerMessengerConfiguration($config['messenger'], $container, $loader, $config['validation']);
323+
$this->registerMessengerConfiguration($config['messenger'], $container, $phpLoader, $config['validation']);
323324
} else {
324325
$container->removeDefinition('console.command.messenger_consume_messages');
325326
$container->removeDefinition('console.command.messenger_debug');
@@ -596,7 +597,7 @@ private function registerProfilerConfiguration(array $config, ContainerBuilder $
596597
}
597598

598599
if ($this->messengerConfigEnabled) {
599-
$loader->load('messenger_debug.xml');
600+
$phpLoader->load('messenger_debug.php');
600601
}
601602

602603
if ($this->mailerConfigEnabled) {
@@ -1629,13 +1630,13 @@ private function registerLockConfiguration(array $config, ContainerBuilder $cont
16291630
}
16301631
}
16311632

1632-
private function registerMessengerConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader, array $validationConfig)
1633+
private function registerMessengerConfiguration(array $config, ContainerBuilder $container, PhpFileLoader $loader, array $validationConfig)
16331634
{
16341635
if (!interface_exists(MessageBusInterface::class)) {
16351636
throw new LogicException('Messenger support cannot be enabled as the Messenger component is not installed. Try running "composer require symfony/messenger".');
16361637
}
16371638

1638-
$loader->load('messenger.xml');
1639+
$loader->load('messenger.php');
16391640

16401641
if (class_exists(AmqpTransportFactory::class)) {
16411642
$container->getDefinition('messenger.transport.amqp.factory')->addTag('messenger.transport_factory');
@@ -1707,6 +1708,7 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
17071708
$container->removeDefinition('messenger.transport.amqp.factory');
17081709
$container->removeDefinition('messenger.transport.redis.factory');
17091710
$container->removeDefinition('messenger.transport.sqs.factory');
1711+
$container->removeAlias(SerializerInterface::class);
17101712
} else {
17111713
$container->getDefinition('messenger.transport.symfony_serializer')
17121714
->replaceArgument(1, $config['serializer']['symfony_serializer']['format'])

Resources/config/messenger.php

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
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+
};

Resources/config/messenger.xml

Lines changed: 0 additions & 136 deletions
This file was deleted.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
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\DataCollector\MessengerDataCollector;
15+
16+
return static function (ContainerConfigurator $container) {
17+
$container->services()
18+
->set('data_collector.messenger', MessengerDataCollector::class)
19+
->tag('data_collector', [
20+
'template' => '@WebProfiler/Collector/messenger.html.twig',
21+
'id' => 'messenger',
22+
'priority' => 100,
23+
])
24+
;
25+
};

0 commit comments

Comments
 (0)