Skip to content

Commit 79425a3

Browse files
committed
Making the serializer configurable by transport
1 parent 6fdc1b4 commit 79425a3

16 files changed

+38
-104
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1095,6 +1095,7 @@ function ($a) {
10951095
->fixXmlConfig('option')
10961096
->children()
10971097
->scalarNode('dsn')->end()
1098+
->scalarNode('serializer')->defaultNull()->info('Service id of a custom serializer to use.')->end()
10981099
->arrayNode('options')
10991100
->normalizeKeys(false)
11001101
->defaultValue([])

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

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@
7575
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
7676
use Symfony\Component\Messenger\MessageBus;
7777
use Symfony\Component\Messenger\MessageBusInterface;
78-
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
7978
use Symfony\Component\Messenger\Transport\TransportFactoryInterface;
8079
use Symfony\Component\Messenger\Transport\TransportInterface;
8180
use Symfony\Component\Mime\MimeTypeGuesserInterface;
@@ -1587,22 +1586,10 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
15871586
$container->removeDefinition('messenger.transport.symfony_serializer');
15881587
$container->removeDefinition('messenger.transport.amqp.factory');
15891588
} else {
1590-
if ('messenger.transport.symfony_serializer' === $config['serializer']['id']) {
1591-
if (!$this->isConfigEnabled($container, $serializerConfig)) {
1592-
throw new LogicException('The Messenger serializer cannot be enabled as the Serializer support is not available. Try enabling it or running "composer require symfony/serializer-pack".');
1593-
}
1594-
1595-
$container->getDefinition('messenger.transport.symfony_serializer')
1596-
->replaceArgument(1, $config['serializer']['format'])
1597-
->replaceArgument(2, $config['serializer']['context']);
1598-
}
1599-
1600-
if ($config['serializer']['id']) {
1601-
$container->setAlias('messenger.transport.serializer', $config['serializer']['id']);
1602-
} else {
1603-
$container->removeDefinition('messenger.transport.amqp.factory');
1604-
$container->removeDefinition(SerializerInterface::class);
1605-
}
1589+
$container->getDefinition('messenger.transport.symfony_serializer')
1590+
->replaceArgument(1, $config['serializer']['format'])
1591+
->replaceArgument(2, $config['serializer']['context']);
1592+
$container->setAlias('messenger.transport.serializer', $config['serializer']['id']);
16061593
}
16071594

16081595
if (null === $config['default_bus'] && 1 === \count($config['buses'])) {
@@ -1648,8 +1635,8 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
16481635

16491636
$senderAliases = [];
16501637
foreach ($config['transports'] as $name => $transport) {
1651-
if (0 === strpos($transport['dsn'], 'amqp://') && !$container->hasDefinition('messenger.transport.amqp.factory')) {
1652-
throw new LogicException('The default AMQP transport is not available. Make sure you have installed and enabled the Serializer component. Try enabling it or running "composer require symfony/serializer-pack".');
1638+
if (null !== $transport['serializer']) {
1639+
$transport['options']['serializer'] = new Reference($transport['serializer']);
16531640
}
16541641

16551642
$transportDefinition = (new Definition(TransportInterface::class))

src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,7 @@
428428
<xsd:element name="options" type="metadata" minOccurs="0" maxOccurs="unbounded" />
429429
</xsd:sequence>
430430
<xsd:attribute name="name" type="xsd:string" />
431+
<xsd:attribute name="serializer" type="xsd:string" />
431432
<xsd:attribute name="dsn" type="xsd:string" />
432433
</xsd:complexType>
433434

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_amqp_transport_no_serializer.php

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

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_transport_no_serializer.php

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

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_transports.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
'customised' => [
1010
'dsn' => 'amqp://localhost/%2f/messages?exchange_name=exchange_name',
1111
'options' => ['queue' => ['name' => 'Queue']],
12+
'serializer' => 'messenger.transport.native_php_serializer',
1213
],
1314
],
1415
],

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_amqp_transport_no_serializer.xml

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

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_transport_no_serializer.xml

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

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_transports.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<framework:messenger>
1111
<framework:serializer id="messenger.transport.symfony_serializer" />
1212
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
13-
<framework:transport name="customised" dsn="amqp://localhost/%2f/messages?exchange_name=exchange_name">
13+
<framework:transport name="customised" dsn="amqp://localhost/%2f/messages?exchange_name=exchange_name" serializer="messenger.transport.native_php_serializer">
1414
<framework:options>
1515
<framework:queue>
1616
<framework:name>Queue</framework:name>

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/messenger_amqp_transport_no_serializer.yml

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

0 commit comments

Comments
 (0)