Skip to content

Commit 7b66e39

Browse files
committed
Changed messenger.transport.serializer to messenger.default_serializer + reorganized messenger serializer config
1 parent 4feff54 commit 7b66e39

19 files changed

+44
-52
lines changed

src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md

+9-2
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,18 @@ CHANGELOG
88
* Not passing the project directory to the constructor of the `AssetsInstallCommand` is deprecated. This argument will
99
be mandatory in 5.0.
1010
* Deprecated the "Psr\SimpleCache\CacheInterface" / "cache.app.simple" service, use "Symfony\Contracts\Cache\CacheInterface" / "cache.app" instead
11+
* Added the ability to specify a custom `serializer` option for each
12+
transport under`framework.messenger.transports`.
1113
* [BC Break] When using Messenger, the default transport changed from
1214
using Symfony's serializer service to use `PhpSerializer`, which uses
1315
PHP's native `serialize()` and `unserialize()` functions. To use the
14-
original serialization method, set the `framework.messenger.serializer.id`
15-
config option to `messenger.transport.symfony_serializer`.
16+
original serialization method, set the `framework.messenger.defaut_serializer`
17+
config option to `messenger.transport.symfony_serializer`. Or set the
18+
`serializer` option under one specific `transport`.
19+
* [BC Break] The `framework.messenger.serializer` config key changed to
20+
`framework.messenger.default_serializer`, which holds the string service
21+
id and `framework.messenger.symfony_serializer`, which configures the
22+
options if you're using Symfony's serializer.
1623
* Added information about deprecated aliases in `debug:autowiring`
1724
* Added php ini session options `sid_length` and `sid_bits_per_character`
1825
to the `session` section of the configuration

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

+7-17
Original file line numberDiff line numberDiff line change
@@ -1107,29 +1107,19 @@ function ($a) {
11071107
->end()
11081108
->end()
11091109
->end()
1110-
->arrayNode('serializer')
1110+
->scalarNode('default_serializer')
1111+
->defaultValue('messenger.transport.native_php_serializer')
1112+
->info('Service id to use as the default serializer for the transports.')
1113+
->end()
1114+
->arrayNode('symfony_serializer')
11111115
->addDefaultsIfNotSet()
1112-
->beforeNormalization()
1113-
->always()
1114-
->then(function ($config) {
1115-
if (false === $config) {
1116-
return ['id' => null];
1117-
}
1118-
1119-
if (\is_string($config)) {
1120-
return ['id' => $config];
1121-
}
1122-
1123-
return $config;
1124-
})
1125-
->end()
11261116
->children()
1127-
->scalarNode('id')->defaultValue('messenger.transport.native_php_serializer')->end()
1128-
->scalarNode('format')->defaultValue('json')->end()
1117+
->scalarNode('format')->defaultValue('json')->info('Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default).')->end()
11291118
->arrayNode('context')
11301119
->normalizeKeys(false)
11311120
->useAttributeAsKey('name')
11321121
->defaultValue([])
1122+
->info('Context array for the messenger.transport.symfony_serializer service (which is not the serializer used by default).')
11331123
->prototype('variable')->end()
11341124
->end()
11351125
->end()

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

+4-7
Original file line numberDiff line numberDiff line change
@@ -1659,18 +1659,15 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
16591659
$container->removeDefinition('messenger.transport.amqp.factory');
16601660
} else {
16611661
$container->getDefinition('messenger.transport.symfony_serializer')
1662-
->replaceArgument(1, $config['serializer']['format'])
1663-
->replaceArgument(2, $config['serializer']['context']);
1664-
$container->setAlias('messenger.transport.serializer', $config['serializer']['id']);
1662+
->replaceArgument(1, $config['symfony_serializer']['format'])
1663+
->replaceArgument(2, $config['symfony_serializer']['context']);
1664+
$container->setAlias('messenger.default_serializer', $config['default_serializer']);
16651665
}
16661666

16671667
$senderAliases = [];
16681668
$transportRetryReferences = [];
16691669
foreach ($config['transports'] as $name => $transport) {
1670-
if (null !== $transport['serializer']) {
1671-
$transport['options']['serializer'] = new Reference($transport['serializer']);
1672-
}
1673-
$serializerId = null !== $transport['serializer'] ? $transport['serializer'] : 'messenger.transport.serializer';
1670+
$serializerId = $transport['serializer'] ?? 'messenger.default_serializer';
16741671

16751672
$transportDefinition = (new Definition(TransportInterface::class))
16761673
->setFactory([new Reference('messenger.transport_factory'), 'createTransport'])

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<argument /> <!-- Format -->
2727
<argument type="collection" /> <!-- Context -->
2828
</service>
29-
<service id="Symfony\Component\Messenger\Transport\Serialization\SerializerInterface" alias="messenger.transport.serializer" />
29+
<service id="Symfony\Component\Messenger\Transport\Serialization\SerializerInterface" alias="messenger.default_serializer" />
3030

3131
<service id="messenger.transport.native_php_serializer" class="Symfony\Component\Messenger\Transport\Serialization\PhpSerializer" />
3232

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,8 @@
402402

403403
<xsd:complexType name="messenger">
404404
<xsd:sequence>
405-
<xsd:element name="serializer" type="messenger_serializer" minOccurs="0" />
405+
<xsd:element name="default-serializer" type="xsd:string" minOccurs="0" />
406+
<xsd:element name="symfony-serializer" type="messenger_symfony_serializer" minOccurs="0" />
406407
<xsd:element name="encoder" type="xsd:string" minOccurs="0" />
407408
<xsd:element name="decoder" type="xsd:string" minOccurs="0" />
408409
<xsd:element name="routing" type="messenger_routing" minOccurs="0" maxOccurs="unbounded" />
@@ -412,12 +413,11 @@
412413
<xsd:attribute name="default-bus" type="xsd:string" />
413414
</xsd:complexType>
414415

415-
<xsd:complexType name="messenger_serializer">
416+
<xsd:complexType name="messenger_symfony_serializer">
416417
<xsd:sequence>
417418
<xsd:element name="context" type="metadata" minOccurs="0" maxOccurs="unbounded" />
418419
</xsd:sequence>
419420
<xsd:attribute name="format" type="xsd:string" />
420-
<xsd:attribute name="id" type="xsd:string" />
421421
</xsd:complexType>
422422

423423
<xsd:complexType name="messenger_routing">

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -325,8 +325,8 @@ class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphor
325325
'enabled' => !class_exists(FullStack::class) && interface_exists(MessageBusInterface::class),
326326
'routing' => [],
327327
'transports' => [],
328-
'serializer' => [
329-
'id' => 'messenger.transport.native_php_serializer',
328+
'default_serializer' => 'messenger.transport.native_php_serializer',
329+
'symfony_serializer' => [
330330
'format' => 'json',
331331
'context' => [],
332332
],

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
$container->loadFromExtension('framework', [
77
'messenger' => [
8-
'serializer' => false,
8+
'default_serializer' => false,
99
'routing' => [
1010
FooMessage::class => ['sender.bar', 'sender.biz'],
1111
BarMessage::class => 'sender.foo',

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
$container->loadFromExtension('framework', [
44
'serializer' => true,
55
'messenger' => [
6-
'serializer' => 'messenger.transport.symfony_serializer',
6+
'default_serializer' => 'messenger.transport.symfony_serializer',
77
'routing' => [
88
'Symfony\Component\Messenger\Tests\Fixtures\DummyMessage' => ['amqp', 'audit'],
99
'Symfony\Component\Messenger\Tests\Fixtures\SecondMessage' => [

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
$container->loadFromExtension('framework', [
44
'serializer' => true,
55
'messenger' => [
6-
'serializer' => [
7-
'id' => 'messenger.transport.symfony_serializer',
6+
'default_serializer' => 'messenger.transport.symfony_serializer',
7+
'symfony_serializer' => [
88
'format' => 'csv',
99
'context' => ['enable_max_depth' => true],
1010
],

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
$container->loadFromExtension('framework', [
44
'serializer' => true,
55
'messenger' => [
6-
'serializer' => 'messenger.transport.symfony_serializer',
6+
'default_serializer' => 'messenger.transport.symfony_serializer',
77
'transports' => [
88
'default' => 'amqp://localhost/%2f/messages',
99
'customised' => [

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<framework:config>
99
<framework:serializer enabled="true" />
1010
<framework:messenger>
11-
<framework:serializer id="messenger.transport.symfony_serializer" />
11+
<framework:default-serializer>messenger.transport.symfony_serializer</framework:default-serializer>
1212
<framework:routing message-class="Symfony\Component\Messenger\Tests\Fixtures\DummyMessage">
1313
<framework:sender service="amqp" />
1414
<framework:sender service="audit" />

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@
88
<framework:config>
99
<framework:serializer enabled="true" />
1010
<framework:messenger>
11-
<framework:serializer id="messenger.transport.symfony_serializer" format="csv">
11+
<framework:default-serializer>messenger.transport.symfony_serializer</framework:default-serializer>
12+
<framework:symfony-serializer format="csv">
1213
<framework:context>
1314
<framework:enable_max_depth>true</framework:enable_max_depth>
1415
</framework:context>
15-
</framework:serializer>
16+
</framework:symfony-serializer>
1617
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
1718
</framework:messenger>
1819
</framework:config>

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<framework:config>
99
<framework:serializer enabled="true" />
1010
<framework:messenger>
11-
<framework:serializer id="messenger.transport.symfony_serializer" />
11+
<framework:default-serializer>messenger.transport.symfony_serializer</framework:default-serializer>
1212
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
1313
<framework:transport name="customised" dsn="amqp://localhost/%2f/messages?exchange_name=exchange_name" serializer="messenger.transport.native_php_serializer">
1414
<framework:options>
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
framework:
22
messenger:
3-
serializer: false
3+
default_serializer: false
44
routing:
55
'Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage': ['sender.bar', 'sender.biz']
66
'Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\BarMessage': 'sender.foo'

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
framework:
22
serializer: true
33
messenger:
4-
serializer: messenger.transport.symfony_serializer
4+
default_serializer: messenger.transport.symfony_serializer
55
routing:
66
'Symfony\Component\Messenger\Tests\Fixtures\DummyMessage': [amqp, audit]
77
'Symfony\Component\Messenger\Tests\Fixtures\SecondMessage':

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
framework:
22
serializer: true
33
messenger:
4-
serializer:
5-
id: messenger.transport.symfony_serializer
4+
default_serializer: messenger.transport.symfony_serializer
5+
symfony_serializer:
66
format: csv
77
context:
88
enable_max_depth: true

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
framework:
22
serializer: true
33
messenger:
4-
serializer: messenger.transport.symfony_serializer
4+
default_serializer: messenger.transport.symfony_serializer
55
transports:
66
default: 'amqp://localhost/%2f/messages'
77
customised:

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -662,14 +662,14 @@ public function testMessengerTransports()
662662
$this->assertTrue($container->getDefinition('messenger.transport.default')->hasTag('messenger.receiver'));
663663
$this->assertEquals([['alias' => 'default']], $container->getDefinition('messenger.transport.default')->getTag('messenger.receiver'));
664664
$transportArguments = $container->getDefinition('messenger.transport.default')->getArguments();
665-
$this->assertEquals(new Reference('messenger.transport.serializer'), $transportArguments[2]);
665+
$this->assertEquals(new Reference('messenger.default_serializer'), $transportArguments[2]);
666666

667667
$this->assertTrue($container->hasDefinition('messenger.transport.customised'));
668668
$transportFactory = $container->getDefinition('messenger.transport.customised')->getFactory();
669669
$transportArguments = $container->getDefinition('messenger.transport.customised')->getArguments();
670670

671671
$this->assertEquals([new Reference('messenger.transport_factory'), 'createTransport'], $transportFactory);
672-
$this->assertCount(2, $transportArguments);
672+
$this->assertCount(3, $transportArguments);
673673
$this->assertSame('amqp://localhost/%2f/messages?exchange_name=exchange_name', $transportArguments[0]);
674674
$this->assertEquals(['queue' => ['name' => 'Queue']], $transportArguments[1]);
675675
$this->assertEquals(new Reference('messenger.transport.native_php_serializer'), $transportArguments[2]);
@@ -700,7 +700,7 @@ public function testMessengerTransportConfiguration()
700700
{
701701
$container = $this->createContainerFromFile('messenger_transport');
702702

703-
$this->assertSame('messenger.transport.symfony_serializer', (string) $container->getAlias('messenger.transport.serializer'));
703+
$this->assertSame('messenger.transport.symfony_serializer', (string) $container->getAlias('messenger.default_serializer'));
704704

705705
$serializerTransportDefinition = $container->getDefinition('messenger.transport.symfony_serializer');
706706
$this->assertSame('csv', $serializerTransportDefinition->getArgument(1));

src/Symfony/Component/Messenger/Transport/TransportFactoryInterface.php

-3
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@
2222
*/
2323
interface TransportFactoryInterface
2424
{
25-
/**
26-
* Creates a new transport using the dsn, options & serializer.
27-
*/
2825
public function createTransport(string $dsn, array $options, SerializerInterface $serializer): TransportInterface;
2926

3027
public function supports(string $dsn, array $options): bool;

0 commit comments

Comments
 (0)