Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d2e8895

Browse files
committed
Use MessengerPass to pass the list of receivers
1 parent e095256 commit d2e8895

4 files changed

Lines changed: 14 additions & 20 deletions

File tree

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1872,8 +1872,6 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
18721872

18731873
$failureTransports = [];
18741874
$failureTransportsByTransportName = [];
1875-
1876-
$failureTransportsServiceLocatorId = 'messenger.failure_transports.locator';
18771875
$failureTransportsByTransportNameServiceLocatorId = 'messenger.failure_transports_by_transport_name.locator';
18781876

18791877
if ($config['failure_transport']) {
@@ -1884,7 +1882,7 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
18841882
$failureTransports[$config['failure_transport']] = $senderReferences[$config['failure_transport']];
18851883
$container->setAlias('messenger.failure_transports.default_transport', $config['failure_transport']);
18861884
}
1887-
1885+
18881886
foreach ($config['transports'] as $name => $transport) {
18891887
if ($transport['failure_transport']) {
18901888
if (!isset($config['transports'][$transport['failure_transport']])) {
@@ -1893,25 +1891,20 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
18931891

18941892
$failureTransportsByTransportName[$name] = $senderReferences[$transport['failure_transport']];
18951893
$failureTransports[$transport['failure_transport']] = $senderReferences[$transport['failure_transport']];
1894+
} else {
1895+
$failureTransportsByTransportName[$name] = $senderReferences[$config['failure_transport']] ?? null;
18961896
}
18971897
}
18981898

18991899
if (\count($failureTransports) > 0) {
1900-
$failureTransportsServiceLocator = ServiceLocatorTagPass::register($container, $failureTransports, $failureTransportsServiceLocatorId);
1901-
$container->getDefinition($failureTransportsServiceLocatorId)
1902-
->replaceArgument(0, $failureTransports);
1903-
19041900
$globalFailureReceiver = $config['failure_transport'] ?? null;
19051901
$container->getDefinition('console.command.messenger_failed_messages_retry')
19061902
->replaceArgument(0, $globalFailureReceiver)
1907-
->replaceArgument(1, $senderReferences[$config['failure_transport']] ?? null)
1908-
->replaceArgument(5, $container->getDefinition($failureTransportsServiceLocator));
1903+
->replaceArgument(1, $senderReferences[$config['failure_transport']] ?? null);
19091904
$container->getDefinition('console.command.messenger_failed_messages_show')
1910-
->replaceArgument(0, $globalFailureReceiver)
1911-
->replaceArgument(1, $container->getDefinition($failureTransportsServiceLocatorId));
1905+
->replaceArgument(0, $globalFailureReceiver);
19121906
$container->getDefinition('console.command.messenger_failed_messages_remove')
1913-
->replaceArgument(0, $globalFailureReceiver)
1914-
->replaceArgument(1, $container->getDefinition($failureTransportsServiceLocatorId));
1907+
->replaceArgument(0, $globalFailureReceiver);
19151908

19161909
$failureTransportsByTransportNameServiceLocator = ServiceLocatorTagPass::register($container, $failureTransportsByTransportName, $failureTransportsByTransportNameServiceLocatorId);
19171910
$container->getDefinition($failureTransportsByTransportNameServiceLocatorId)

src/Symfony/Bundle/FrameworkBundle/Resources/config/console.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,6 @@
170170
service('messenger.routable_message_bus'),
171171
service('event_dispatcher'),
172172
service('logger'),
173-
abstract_arg('Receivers'),
174173
])
175174
->tag('console.command', ['command' => 'messenger:failed:retry'])
176175

src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,6 @@
132132
->set('messenger.transport.beanstalkd.factory', BeanstalkdTransportFactory::class)
133133

134134
// failed transports
135-
->set('messenger.failure_transports.locator', ServiceLocator::class)
136-
->args([
137-
abstract_arg('failed transports map by name'),
138-
])
139-
->tag('container.service_locator')
140135
->set('messenger.failure_transports_by_transport_name.locator', ServiceLocator::class)
141136
->args([
142137
abstract_arg('failed transports map by transport name'),

src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,9 +251,16 @@ private function guessHandledClasses(\ReflectionClass $handlerClass, string $ser
251251
private function registerReceivers(ContainerBuilder $container, array $busIds)
252252
{
253253
$receiverMapping = [];
254-
254+
$failureTransportsMapping = [];
255+
255256
foreach ($container->findTaggedServiceIds($this->receiverTag) as $id => $tags) {
256257
$receiverClass = $this->getServiceClass($container, $id);
258+
259+
$tag = current($tags);
260+
if (isset($tag['failure_transport']) && $tag['failure_transport'] !== null) {
261+
$failureTransportsMapping[$tag['failure_transport']] = new Reference($tag['failure_transport']);
262+
}
263+
257264
if (!is_subclass_of($receiverClass, ReceiverInterface::class)) {
258265
throw new RuntimeException(sprintf('Invalid receiver "%s": class "%s" must implement interface "%s".', $id, $receiverClass, ReceiverInterface::class));
259266
}

0 commit comments

Comments
 (0)