Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit c7e613d

Browse filesBrowse files
committed
BC layer
1 parent e151d3c commit c7e613d
Copy full SHA for c7e613d

File tree

13 files changed

+99
-33
lines changed
Filter options

13 files changed

+99
-33
lines changed

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

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
+16-7Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,9 @@ public function load(array $configs, ContainerBuilder $container)
282282
$container->removeDefinition('console.command.messenger_debug');
283283
$container->removeDefinition('console.command.messenger_stop_workers');
284284
$container->removeDefinition('console.command.messenger_setup_transports');
285+
$container->removeDefinition('console.command.messenger_failed_messages_retry');
286+
$container->removeDefinition('console.command.messenger_failed_messages_show');
287+
$container->removeDefinition('console.command.messenger_failed_messages_purge');
285288
}
286289

287290
$propertyInfoEnabled = $this->isConfigEnabled($container, $config['property_info']);
@@ -1758,13 +1761,19 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
17581761
$container->getDefinition('messenger.failure.send_failed_message_to_failed_transport_listener')
17591762
->replaceArgument(1, $config['failure_transport']);
17601763

1761-
$container->getDefinition('console.command.messenger_failed_messages_retry')
1762-
->replaceArgument(0, $config['failure_transport'])
1763-
->replaceArgument(4, $transportRetryReferences[$config['failure_transport']] ?? null);
1764-
$container->getDefinition('console.command.messenger_failed_messages_show')
1765-
->replaceArgument(0, $config['failure_transport']);
1766-
$container->getDefinition('console.command.messenger_failed_messages_purge')
1767-
->replaceArgument(0, $config['failure_transport']);
1764+
if ($config['failure_transport']) {
1765+
$container->getDefinition('console.command.messenger_failed_messages_retry')
1766+
->replaceArgument(0, $config['failure_transport'])
1767+
->replaceArgument(4, $transportRetryReferences[$config['failure_transport']] ?? null);
1768+
$container->getDefinition('console.command.messenger_failed_messages_show')
1769+
->replaceArgument(0, $config['failure_transport']);
1770+
$container->getDefinition('console.command.messenger_failed_messages_purge')
1771+
->replaceArgument(0, $config['failure_transport']);
1772+
} else {
1773+
$container->removeDefinition('console.command.messenger_failed_messages_retry');
1774+
$container->removeDefinition('console.command.messenger_failed_messages_show');
1775+
$container->removeDefinition('console.command.messenger_failed_messages_purge');
1776+
}
17681777
}
17691778

17701779
private function registerCacheConfiguration(array $config, ContainerBuilder $container)

‎src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@
9393
<service id="messenger.failure.send_failed_message_to_failed_transport_listener" class="Symfony\Component\Messenger\EventListener\SendFailedMessageToFailedTransportListener">
9494
<tag name="kernel.event_subscriber" />
9595
<tag name="monolog.logger" channel="messenger" />
96-
<argument /> <!-- Message bus locator -->
96+
<argument type="service" id="messenger.routable_message_bus" />
9797
<argument /> <!-- Failed transport name -->
9898
<argument type="service" id="logger" on-invalid="ignore" />
9999
</service>

‎src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,7 @@ class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphor
328328
'enabled' => !class_exists(FullStack::class) && interface_exists(MessageBusInterface::class),
329329
'routing' => [],
330330
'transports' => [],
331+
'failure_transport' => null,
331332
'default_serializer' => 'messenger.transport.native_php_serializer',
332333
'symfony_serializer' => [
333334
'format' => 'json',

‎src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php
+8-4Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -707,12 +707,16 @@ public function testMessengerRouting()
707707
'*' => false,
708708
];
709709

710-
$this->assertSame($messageToSendAndHandleMapping, $senderLocatorDefinition->getArgument(1));
710+
$this->assertSame($messageToSendAndHandleMapping, $senderLocatorDefinition->getArgument(2));
711711
$sendersMapping = $senderLocatorDefinition->getArgument(0);
712712
$this->assertEquals([
713-
'amqp' => new Reference('messenger.transport.amqp'),
714-
'audit' => new Reference('audit'),
715-
], $sendersMapping[DummyMessage::class]->getValues());
713+
'amqp',
714+
'audit',
715+
], $sendersMapping[DummyMessage::class]);
716+
$sendersLocator = $container->getDefinition((string) $senderLocatorDefinition->getArgument(1));
717+
$this->assertSame(['amqp', 'audit'], array_keys($sendersLocator->getArgument(0)));
718+
$this->assertEquals(new Reference('messenger.transport.amqp'), $sendersLocator->getArgument(0)['amqp']->getValues()[0]);
719+
$this->assertEquals(new Reference('audit'), $sendersLocator->getArgument(0)['audit']->getValues()[0]);
716720
}
717721

718722
public function testMessengerTransportConfiguration()

‎src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Command/ConsumeMessagesCommand.php
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,10 @@ public function __construct(ContainerInterface $busLocator, ContainerInterface $
5353
{
5454
if (\is_array($retryStrategyLocator)) {
5555
@trigger_error(sprintf('The 5th argument of the class "%s" should be a retry-strategy locator, an array of bus names as a value is deprecated since Symfony 4.3.', __CLASS__), E_USER_DEPRECATED);
56+
5657
$retryStrategyLocator = null;
5758
}
59+
5860
$this->busLocator = $busLocator;
5961
$this->receiverLocator = $receiverLocator;
6062
$this->logger = $logger;

‎src/Symfony/Component/Messenger/Command/FailedMessagesPurgeCommand.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Command/FailedMessagesPurgeCommand.php
+11-6Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use Symfony\Component\Console\Output\OutputInterface;
2020
use Symfony\Component\Console\Style\SymfonyStyle;
2121
use Symfony\Component\Messenger\Transport\Receiver\ListableReceiverInterface;
22+
use Symfony\Component\Messenger\Transport\Receiver\ReceiverInterface;
2223

2324
/**
2425
* @author Ryan Weaver <ryan@symfonycasts.com>
@@ -44,6 +45,10 @@ protected function configure(): void
4445
The <info>%command.name%</info> removes message that are waiting in the failure transport.
4546
4647
<info>php %command.full_name%</info>
48+
49+
Or remove a specific id, which can be found via the messenger:failed:show command:
50+
51+
<info>php %command.full_name% {id}</info>
4752
EOF
4853
)
4954
;
@@ -58,10 +63,6 @@ protected function execute(InputInterface $input, OutputInterface $output)
5863

5964
$receiver = $this->getReceiver();
6065

61-
if (!$receiver instanceof ListableReceiverInterface) {
62-
throw new RuntimeException(sprintf('The "%s" receiver does not support deleting one or all messages.', $this->getReceiverName()));
63-
}
64-
6566
$shouldForce = $input->getOption('force');
6667
if (null === $id = $input->getArgument('id')) {
6768
$this->removeAllMessages($receiver, $io, $shouldForce);
@@ -70,8 +71,12 @@ protected function execute(InputInterface $input, OutputInterface $output)
7071
}
7172
}
7273

73-
private function removeSingleMessage($id, ListableReceiverInterface $receiver, SymfonyStyle $io, bool $shouldForce)
74+
private function removeSingleMessage($id, ReceiverInterface $receiver, SymfonyStyle $io, bool $shouldForce)
7475
{
76+
if (!$receiver instanceof ListableReceiverInterface) {
77+
throw new RuntimeException(sprintf('The "%s" receiver does not support removing specific messages.', $this->getReceiverName()));
78+
}
79+
7580
$envelope = $receiver->find($id);
7681
if (null === $envelope) {
7782
throw new RuntimeException(sprintf('The message with id "%s" was not found.', $id));
@@ -87,7 +92,7 @@ private function removeSingleMessage($id, ListableReceiverInterface $receiver, S
8792
}
8893
}
8994

90-
private function removeAllMessages(ListableReceiverInterface $receiver, SymfonyStyle $io, bool $shouldForce)
95+
private function removeAllMessages(ReceiverInterface $receiver, SymfonyStyle $io, bool $shouldForce)
9196
{
9297
if ($shouldForce || $io->confirm('Do you want to permanently remove ALL failed messages ?', false)) {
9398
$receiver->purge();

‎src/Symfony/Component/Messenger/Command/FailedMessagesRetryCommand.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Command/FailedMessagesRetryCommand.php
-2Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
namespace Symfony\Component\Messenger\Command;
1313

14-
use Psr\Container\ContainerInterface;
1514
use Psr\Log\LoggerInterface;
1615
use Symfony\Component\Console\Exception\RuntimeException;
1716
use Symfony\Component\Console\Input\InputArgument;
@@ -25,7 +24,6 @@
2524
use Symfony\Component\Messenger\Event\WorkerMessageReceivedEvent;
2625
use Symfony\Component\Messenger\MessageBusInterface;
2726
use Symfony\Component\Messenger\Retry\RetryStrategyInterface;
28-
use Symfony\Component\Messenger\RoutableMessageBus;
2927
use Symfony\Component\Messenger\Transport\Receiver\ListableReceiverInterface;
3028
use Symfony\Component\Messenger\Transport\Receiver\MessageCountAwareInterface;
3129
use Symfony\Component\Messenger\Transport\Receiver\ReceiverInterface;

‎src/Symfony/Component/Messenger/Command/FailedMessagesShowCommand.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Command/FailedMessagesShowCommand.php
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ protected function configure(): void
4646
The <info>%command.name%</info> shows message that are waiting in the failure transport.
4747
4848
<info>php %command.full_name%</info>
49+
50+
Or look at a specific message by its id:
51+
52+
<info>php %command.full_name% {id}</info>
4953
EOF
5054
)
5155
;

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

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/DependencyInjection/MessengerPass.php
+1-5Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,7 @@ private function registerReceivers(ContainerBuilder $container, array $busIds)
253253

254254
if ($container->hasDefinition('console.command.messenger_consume_messages')) {
255255
$container->getDefinition('console.command.messenger_consume_messages')
256+
->replaceArgument(0, ServiceLocatorTagPass::register($container, $buses))
256257
->replaceArgument(3, array_values($receiverNames));
257258
}
258259

@@ -263,11 +264,6 @@ private function registerReceivers(ContainerBuilder $container, array $busIds)
263264

264265
$container->getDefinition('messenger.receiver_locator')->replaceArgument(0, $receiverMapping);
265266

266-
if ($container->hasDefinition('messenger.failure.send_failed_message_to_failed_transport_listener')) {
267-
$container->getDefinition('messenger.failure.send_failed_message_to_failed_transport_listener')
268-
->replaceArgument(0, ServiceLocatorTagPass::register($container, $buses));
269-
}
270-
271267
$failedCommandIds = [
272268
'console.command.messenger_failed_messages_retry',
273269
'console.command.messenger_failed_messages_show',

‎src/Symfony/Component/Messenger/Tests/Stamp/SentToFailedTransportStampTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Tests/Stamp/SentToFailedTransportStampTest.php
-1Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Component\Debug\Exception\FlattenException;
16-
use Symfony\Component\Messenger\Stamp\RedeliveryStamp;
1716
use Symfony\Component\Messenger\Stamp\SentToFailedTransportStamp;
1817

1918
class SentToFailedTransportStampTest extends TestCase

‎src/Symfony/Component/Messenger/Tests/Transport/Sender/SendersLocatorTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Tests/Transport/Sender/SendersLocatorTest.php
+27-2Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
use PHPUnit\Framework\TestCase;
1515
use Psr\Container\ContainerInterface;
1616
use Symfony\Component\Messenger\Envelope;
17-
use Symfony\Component\Messenger\Exception\InvalidArgumentException;
17+
use Symfony\Component\Messenger\Exception\UnknownSenderException;
1818
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
1919
use Symfony\Component\Messenger\Tests\Fixtures\SecondMessage;
2020
use Symfony\Component\Messenger\Transport\Sender\SenderInterface;
@@ -53,7 +53,7 @@ public function testGetSenderByAlias()
5353

5454
public function testGetSenderByAliasThrowsException()
5555
{
56-
$this->expectException(InvalidArgumentException::class);
56+
$this->expectException(UnknownSenderException::class);
5757
$this->expectExceptionMessage('Unknown sender alias');
5858

5959
$sender1 = $this->getMockBuilder(SenderInterface::class)->getMock();
@@ -65,6 +65,31 @@ public function testGetSenderByAliasThrowsException()
6565
$locator->getSenderByAlias('sender2');
6666
}
6767

68+
/**
69+
* @group legacy
70+
*/
71+
public function testItReturnsTheSenderBasedOnTheMessageClassLegacy()
72+
{
73+
$sender = $this->getMockBuilder(SenderInterface::class)->getMock();
74+
$locator = new SendersLocator([
75+
DummyMessage::class => [$sender],
76+
]);
77+
$this->assertSame([$sender], iterator_to_array($locator->getSenders(new Envelope(new DummyMessage('a')))));
78+
$this->assertSame([], iterator_to_array($locator->getSenders(new Envelope(new SecondMessage()))));
79+
}
80+
81+
/**
82+
* @group legacy
83+
*/
84+
public function testItYieldsProvidedSenderAliasAsKeyLegacy()
85+
{
86+
$sender = $this->getMockBuilder(SenderInterface::class)->getMock();
87+
$locator = new SendersLocator([
88+
DummyMessage::class => ['dummy' => $sender],
89+
]);
90+
$this->assertSame(['dummy' => $sender], iterator_to_array($locator->getSenders(new Envelope(new DummyMessage('a')))));
91+
}
92+
6893
private function createContainer(array $senders)
6994
{
7095
$container = $this->createMock(ContainerInterface::class);

‎src/Symfony/Component/Messenger/Transport/Doctrine/Connection.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Transport/Doctrine/Connection.php
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,13 @@ public static function buildConfiguration($dsn, array $options = [])
8787
// check for extra keys in options
8888
$optionsExtraKeys = array_diff(array_keys($options), array_keys($configuration));
8989
if (0 < \count($optionsExtraKeys)) {
90-
throw new TransportException(sprintf('Unknown option found : [%s]. Allowed options are [%s]', implode(', ', $optionsExtraKeys), implode(', ', self::DEFAULT_OPTIONS)));
90+
throw new InvalidArgumentException(sprintf('Unknown option found : [%s]. Allowed options are [%s]', implode(', ', $optionsExtraKeys), implode(', ', self::DEFAULT_OPTIONS)));
9191
}
9292

9393
// check for extra keys in options
9494
$queryExtraKeys = array_diff(array_keys($query), array_keys($configuration));
9595
if (0 < \count($queryExtraKeys)) {
96-
throw new TransportException(sprintf('Unknown option found in DSN: [%s]. Allowed options are [%s]', implode(', ', $queryExtraKeys), implode(', ', self::DEFAULT_OPTIONS)));
96+
throw new InvalidArgumentException(sprintf('Unknown option found in DSN: [%s]. Allowed options are [%s]', implode(', ', $queryExtraKeys), implode(', ', self::DEFAULT_OPTIONS)));
9797
}
9898

9999
return $configuration;

‎src/Symfony/Component/Messenger/Transport/Sender/SendersLocator.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Messenger/Transport/Sender/SendersLocator.php
+26-3Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Component\Messenger\Transport\Sender;
1313

1414
use Psr\Container\ContainerInterface;
15+
use Symfony\Component\DependencyInjection\ServiceLocator;
1516
use Symfony\Component\Messenger\Envelope;
1617
use Symfony\Component\Messenger\Exception\RuntimeException;
1718
use Symfony\Component\Messenger\Exception\UnknownSenderException;
@@ -28,18 +29,27 @@ class SendersLocator implements SendersLocatorInterface
2829
{
2930
private $sendersMap;
3031
private $sendersLocator;
32+
private $useLegacyLookup = false;
3133
private $sendAndHandle;
3234

3335
/**
3436
* @param string[][] $sendersMap An array, keyed by "type", set to an array of sender aliases
3537
* @param ContainerInterface Locator of senders, keyed by sender alias
3638
* @param bool[] $sendAndHandle
3739
*/
38-
public function __construct(array $sendersMap, ContainerInterface $sendersLocator, array $sendAndHandle = [])
40+
public function __construct(array $sendersMap, /*ContainerInterface*/ $sendersLocator = null, array $sendAndHandle = [])
3941
{
4042
$this->sendersMap = $sendersMap;
41-
$this->sendersLocator = $sendersLocator;
42-
$this->sendAndHandle = $sendAndHandle;
43+
44+
if (is_array($sendersLocator) || null === $sendersLocator) {
45+
@trigger_error(sprintf('The 2nd argument to "%s::__construct()" requires ContainerInterface 2nd argument. Not passing that was deprecated in Symfony 4.3 and will be required in Symfony 5.0.', __CLASS__), E_USER_DEPRECATED);
46+
$this->sendersLocator = new ServiceLocator([]);
47+
$this->sendAndHandle = $sendersLocator;
48+
$this->useLegacyLookup = true;
49+
} else {
50+
$this->sendersLocator = $sendersLocator;
51+
$this->sendAndHandle = $sendAndHandle;
52+
}
4353
}
4454

4555
/**
@@ -52,6 +62,19 @@ public function getSenders(Envelope $envelope, ?bool &$handle = false): iterable
5262
$seen = [];
5363

5464
foreach (HandlersLocator::listTypes($envelope) as $type) {
65+
// the old way of looking up senders
66+
if ($this->useLegacyLookup) {
67+
foreach ($this->sendersMap[$type] ?? [] as $alias => $sender) {
68+
if (!\in_array($sender, $seen, true)) {
69+
yield $alias => $seen[] = $sender;
70+
}
71+
}
72+
73+
$handle = $handle ?: $this->sendAndHandle[$type] ?? false;
74+
75+
continue;
76+
}
77+
5578
foreach ($this->sendersMap[$type] ?? [] as $senderAlias) {
5679
if (!\in_array($senderAlias, $seen, true)) {
5780
if (false === $this->sendersLocator->has($senderAlias)) {

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.