Skip to content

Commit dfadbfa

Browse files
committed
Revert "[Messenger] Removing "sync" transport and replacing it with much nicer config trick"
This reverts commit 3d4e59a10b0b0e8e47ac48b6a6dd2b79484b0843.
1 parent d1f91f5 commit dfadbfa

File tree

6 files changed

+26
-87
lines changed

6 files changed

+26
-87
lines changed

DependencyInjection/FrameworkExtension.php

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1775,27 +1775,18 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
17751775
$container->setAlias('messenger.default_serializer', $config['serializer']['default_serializer']);
17761776
}
17771777

1778-
$senderReferences = [];
1779-
$syncTransports = [];
1778+
$senderAliases = [];
17801779
$transportRetryReferences = [];
17811780
foreach ($config['transports'] as $name => $transport) {
17821781
$serializerId = $transport['serializer'] ?? 'messenger.default_serializer';
17831782

1784-
if (0 === strpos($transport['dsn'], 'sync://')) {
1785-
$syncTransports[] = $name;
1786-
} else {
1787-
$transportDefinition = (new Definition(TransportInterface::class))
1788-
->setFactory([new Reference('messenger.transport_factory'), 'createTransport'])
1789-
->setArguments([$transport['dsn'], $transport['options'] + ['transport_name' => $name], new Reference($serializerId)])
1790-
->addTag('messenger.receiver', ['alias' => $name])
1791-
;
1792-
$container->setDefinition($transportId = 'messenger.transport.'.$name, $transportDefinition);
1793-
1794-
// alias => service_id
1795-
$senderReferences[$name] = new Reference($transportId);
1796-
// service_id => service_id
1797-
$senderReferences[$transportId] = new Reference($transportId);
1798-
}
1783+
$transportDefinition = (new Definition(TransportInterface::class))
1784+
->setFactory([new Reference('messenger.transport_factory'), 'createTransport'])
1785+
->setArguments([$transport['dsn'], $transport['options'] + ['transport_name' => $name], new Reference($serializerId)])
1786+
->addTag('messenger.receiver', ['alias' => $name])
1787+
;
1788+
$container->setDefinition($transportId = 'messenger.transport.'.$name, $transportDefinition);
1789+
$senderAliases[$name] = $transportId;
17991790

18001791
if (null !== $transport['retry_strategy']['service']) {
18011792
$transportRetryReferences[$name] = new Reference($transport['retry_strategy']['service']);
@@ -1813,25 +1804,30 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
18131804
}
18141805
}
18151806

1807+
$senderReferences = [];
1808+
// alias => service_id
1809+
foreach ($senderAliases as $alias => $serviceId) {
1810+
$senderReferences[$alias] = new Reference($serviceId);
1811+
}
1812+
// service_id => service_id
1813+
foreach ($senderAliases as $serviceId) {
1814+
$senderReferences[$serviceId] = new Reference($serviceId);
1815+
}
1816+
18161817
$messageToSendersMapping = [];
18171818
foreach ($config['routing'] as $message => $messageConfiguration) {
18181819
if ('*' !== $message && !class_exists($message) && !interface_exists($message, false)) {
18191820
throw new LogicException(sprintf('Invalid Messenger routing configuration: class or interface "%s" not found.', $message));
18201821
}
18211822

1822-
// filter out "sync" senders
1823-
$realSenders = [];
1823+
// make sure senderAliases contains all senders
18241824
foreach ($messageConfiguration['senders'] as $sender) {
1825-
if (isset($senderReferences[$sender])) {
1826-
$realSenders[] = $sender;
1827-
} elseif (!\in_array($sender, $syncTransports, true)) {
1825+
if (!isset($senderReferences[$sender])) {
18281826
throw new LogicException(sprintf('Invalid Messenger routing configuration: the "%s" class is being routed to a sender called "%s". This is not a valid transport or service id.', $message, $sender));
18291827
}
18301828
}
18311829

1832-
if ($realSenders) {
1833-
$messageToSendersMapping[$message] = $realSenders;
1834-
}
1830+
$messageToSendersMapping[$message] = $messageConfiguration['senders'];
18351831
}
18361832

18371833
$container->getDefinition('messenger.senders_locator')

Resources/config/messenger.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@
7575
<tag name="messenger.transport_factory" />
7676
</service>
7777

78+
<service id="messenger.transport.sync.factory" class="Symfony\Component\Messenger\Transport\Sync\SyncTransportFactory">
79+
<tag name="messenger.transport_factory" />
80+
<argument type="service" id="messenger.routable_message_bus" />
81+
</service>
82+
7883
<service id="messenger.transport.in_memory.factory" class="Symfony\Component\Messenger\Transport\InMemoryTransportFactory">
7984
<tag name="messenger.transport_factory" />
8085
<tag name="kernel.reset" method="reset" />

Tests/DependencyInjection/Fixtures/php/messenger_sync_transport.php

Lines changed: 0 additions & 15 deletions
This file was deleted.

Tests/DependencyInjection/Fixtures/xml/messenger_sync_transport.xml

Lines changed: 0 additions & 24 deletions
This file was deleted.

Tests/DependencyInjection/Fixtures/yml/messenger_sync_transport.yml

Lines changed: 0 additions & 10 deletions
This file was deleted.

Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddAnnotationsCachedReaderPass;
1717
use Symfony\Bundle\FrameworkBundle\DependencyInjection\FrameworkExtension;
1818
use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\DummyMessage;
19-
use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage;
20-
use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\SecondMessage;
2119
use Symfony\Bundle\FrameworkBundle\Tests\TestCase;
2220
use Symfony\Bundle\FullStack;
2321
use Symfony\Component\Cache\Adapter\AdapterInterface;
@@ -784,17 +782,6 @@ public function testMessengerInvalidTransportRouting()
784782
$this->createContainerFromFile('messenger_routing_invalid_transport');
785783
}
786784

787-
public function testMessengerSyncTransport()
788-
{
789-
$container = $this->createContainerFromFile('messenger_sync_transport');
790-
$senderLocatorDefinition = $container->getDefinition('messenger.senders_locator');
791-
792-
$sendersMapping = $senderLocatorDefinition->getArgument(0);
793-
$this->assertEquals(['amqp'], $sendersMapping[DummyMessage::class]);
794-
$this->assertArrayNotHasKey(SecondMessage::class, $sendersMapping);
795-
$this->assertEquals(['amqp'], $sendersMapping[FooMessage::class]);
796-
}
797-
798785
public function testTranslator()
799786
{
800787
$container = $this->createContainerFromFile('full');

0 commit comments

Comments
 (0)