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

Skip to content

Commit bcb3783

Browse files
committed
use new service locator created on MessengerPass
1 parent d2e8895 commit bcb3783

2 files changed

Lines changed: 19 additions & 7 deletions

File tree

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1880,7 +1880,7 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
18801880
}
18811881

18821882
$failureTransports[$config['failure_transport']] = $senderReferences[$config['failure_transport']];
1883-
$container->setAlias('messenger.failure_transports.default_transport', $config['failure_transport']);
1883+
$container->setAlias('messenger.failure_transports.default', $config['failure_transport']);
18841884
}
18851885

18861886
foreach ($config['transports'] as $name => $transport) {
@@ -1899,8 +1899,7 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
18991899
if (\count($failureTransports) > 0) {
19001900
$globalFailureReceiver = $config['failure_transport'] ?? null;
19011901
$container->getDefinition('console.command.messenger_failed_messages_retry')
1902-
->replaceArgument(0, $globalFailureReceiver)
1903-
->replaceArgument(1, $senderReferences[$config['failure_transport']] ?? null);
1902+
->replaceArgument(0, $globalFailureReceiver);
19041903
$container->getDefinition('console.command.messenger_failed_messages_show')
19051904
->replaceArgument(0, $globalFailureReceiver);
19061905
$container->getDefinition('console.command.messenger_failed_messages_remove')

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

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use Symfony\Component\DependencyInjection\Definition;
2020
use Symfony\Component\DependencyInjection\Exception\RuntimeException;
2121
use Symfony\Component\DependencyInjection\Reference;
22+
use Symfony\Component\DependencyInjection\ServiceLocator;
2223
use Symfony\Component\Messenger\Handler\HandlerDescriptor;
2324
use Symfony\Component\Messenger\Handler\HandlersLocator;
2425
use Symfony\Component\Messenger\Handler\MessageSubscriberInterface;
@@ -251,14 +252,22 @@ private function guessHandledClasses(\ReflectionClass $handlerClass, string $ser
251252
private function registerReceivers(ContainerBuilder $container, array $busIds)
252253
{
253254
$receiverMapping = [];
254-
$failureTransportsMapping = [];
255+
$failureTransportsMap = [];
256+
257+
$globalFailureTransportId = 'messenger.failure_transports.default';
258+
if ($container->hasAlias($globalFailureTransportId)) {
259+
$globalFailureTransport = (string) $container->getAlias($globalFailureTransportId);
260+
if ($globalFailureTransport !== null) {
261+
$failureTransportsMap[$globalFailureTransport] = new Reference('messenger.transport.' . $globalFailureTransport);
262+
}
263+
}
255264

256265
foreach ($container->findTaggedServiceIds($this->receiverTag) as $id => $tags) {
257266
$receiverClass = $this->getServiceClass($container, $id);
258267

259268
$tag = current($tags);
260269
if (isset($tag['failure_transport']) && $tag['failure_transport'] !== null) {
261-
$failureTransportsMapping[$tag['failure_transport']] = new Reference($tag['failure_transport']);
270+
$failureTransportsMap[$tag['failure_transport']] = new Reference('messenger.transport.'.$tag['failure_transport']);
262271
}
263272

264273
if (!is_subclass_of($receiverClass, ReceiverInterface::class)) {
@@ -305,7 +314,11 @@ private function registerReceivers(ContainerBuilder $container, array $busIds)
305314
}
306315

307316
$container->getDefinition('messenger.receiver_locator')->replaceArgument(0, $receiverMapping);
308-
317+
318+
$failureTransportsLocator = (new Definition(ServiceLocator::class))
319+
->addArgument($failureTransportsMap)
320+
->addTag('container.service_locator');
321+
309322
$failedCommandIds = [
310323
'console.command.messenger_failed_messages_retry',
311324
'console.command.messenger_failed_messages_show',
@@ -314,7 +327,7 @@ private function registerReceivers(ContainerBuilder $container, array $busIds)
314327
foreach ($failedCommandIds as $failedCommandId) {
315328
if ($container->hasDefinition($failedCommandId)) {
316329
$definition = $container->getDefinition($failedCommandId);
317-
$definition->replaceArgument(1, $receiverMapping[$definition->getArgument(0)]);
330+
$definition->replaceArgument(1, $failureTransportsLocator);
318331
}
319332
}
320333
}

0 commit comments

Comments
 (0)