Movatterモバイル変換


[0]ホーム

URL:


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

Sign up
Appearance settings

Commit1a3f0bb

Browse files
committed
[Messenger] Allow to configure the transport
1 parentd2f8df8 commit1a3f0bb

File tree

18 files changed

+173
-17
lines changed

18 files changed

+173
-17
lines changed

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1008,6 +1008,21 @@ function ($a) {
10081008
->end()
10091009
->end()
10101010
->end()
1011+
->arrayNode('serializer')
1012+
->canBeDisabled()
1013+
->addDefaultsIfNotSet()
1014+
->children()
1015+
->scalarNode('format')->defaultValue('json')->end()
1016+
->arrayNode('context')
1017+
->normalizeKeys(false)
1018+
->useAttributeAsKey('name')
1019+
->defaultValue(array())
1020+
->prototype('variable')->end()
1021+
->end()
1022+
->end()
1023+
->end()
1024+
->scalarNode('encoder')->defaultValue('messenger.transport.serializer')->end()
1025+
->scalarNode('decoder')->defaultValue('messenger.transport.serializer')->end()
10111026
->arrayNode('middlewares')
10121027
->addDefaultsIfNotSet()
10131028
->children()

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

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ public function load(array $configs, ContainerBuilder $container)
273273
}
274274

275275
if ($this->isConfigEnabled($container,$config['messenger'])) {
276-
$this->registerMessengerConfiguration($config['messenger'],$container,$loader);
276+
$this->registerMessengerConfiguration($config['messenger'],$container,$loader,$config['serializer']);
277277
}else {
278278
$container->removeDefinition('console.command.messenger_consume_messages');
279279
}
@@ -1438,14 +1438,29 @@ private function registerLockConfiguration(array $config, ContainerBuilder $cont
14381438
}
14391439
}
14401440

1441-
privatefunctionregisterMessengerConfiguration(array$config,ContainerBuilder$container,XmlFileLoader$loader)
1441+
privatefunctionregisterMessengerConfiguration(array$config,ContainerBuilder$container,XmlFileLoader$loader,array$serializerConfig)
14421442
{
14431443
if (!interface_exists(MessageBusInterface::class)) {
14441444
thrownewLogicException('Messenger support cannot be enabled as the Messenger component is not installed.');
14451445
}
14461446

14471447
$loader->load('messenger.xml');
14481448

1449+
if ($this->isConfigEnabled($container,$config['serializer'])) {
1450+
if (count($config['adapters']) >0 && !$this->isConfigEnabled($container,$serializerConfig)) {
1451+
thrownewLogicException('Using the default encoder/decoder, Symfony Messenger requires the Serializer. Enable it or install it by running "composer require symfony/serializer-pack".');
1452+
}
1453+
1454+
$container->getDefinition('messenger.transport.serializer')
1455+
->replaceArgument(1,$config['serializer']['format'])
1456+
->replaceArgument(2,$config['serializer']['context']);
1457+
}else {
1458+
$container->removeDefinition('messenger.transport.serializer');
1459+
}
1460+
1461+
$container->setAlias('messenger.transport.encoder',$config['encoder']);
1462+
$container->setAlias('messenger.transport.decoder',$config['decoder']);
1463+
14491464
$messageToSenderIdsMapping =array();
14501465
foreach ($config['routing']as$message =>$messageConfiguration) {
14511466
$messageToSenderIdsMapping[$message] =$messageConfiguration['senders'];

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,12 @@
4343
</service>
4444

4545
<!-- Message encoding/decoding-->
46-
<serviceid="messenger.transport.serialize_message_with_type_in_headers"class="Symfony\Component\Messenger\Transport\Serialization\Serializer">
46+
<serviceid="messenger.transport.serializer"class="Symfony\Component\Messenger\Transport\Serialization\Serializer">
4747
<argumenttype="service"id="serializer" />
48+
<argument /><!-- Format-->
49+
<argumenttype="collection" /><!-- Context-->
4850
</service>
4951

50-
<serviceid="messenger.transport.default_encoder"alias="messenger.transport.serialize_message_with_type_in_headers"public="true" />
51-
<serviceid="messenger.transport.default_decoder"alias="messenger.transport.serialize_message_with_type_in_headers"public="true" />
52-
5352
<!-- Logging & Debug-->
5453
<serviceid="messenger.middleware.debug.logging"class="Symfony\Component\Messenger\Debug\LoggingMiddleware">
5554
<argumenttype="service"id="logger" />
@@ -79,8 +78,8 @@
7978
</service>
8079

8180
<serviceid="messenger.adapter.amqp.factory"class="Symfony\Component\Messenger\Adapter\AmqpExt\AmqpAdapterFactory">
82-
<argumenttype="service"id="messenger.transport.default_encoder" />
83-
<argumenttype="service"id="messenger.transport.default_decoder" />
81+
<argumenttype="service"id="messenger.transport.encoder" />
82+
<argumenttype="service"id="messenger.transport.decoder" />
8483
<argument>%kernel.debug%</argument>
8584

8685
<tagname="messenger.adapter_factory" />

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,12 +352,23 @@
352352

353353
<xsd:complexTypename="messenger">
354354
<xsd:sequence>
355+
<xsd:elementname="serializer"type="messenger_serializer"minOccurs="0" />
356+
<xsd:elementname="encoder"type="xsd:string"minOccurs="0" />
357+
<xsd:elementname="decoder"type="xsd:string"minOccurs="0" />
355358
<xsd:elementname="routing"type="messenger_routing"minOccurs="0"maxOccurs="unbounded" />
356359
<xsd:elementname="middlewares"type="messenger_middleware"minOccurs="0"maxOccurs="unbounded" />
357360
<xsd:elementname="adapter"type="messenger_adapter"minOccurs="0"maxOccurs="unbounded" />
358361
</xsd:sequence>
359362
</xsd:complexType>
360363

364+
<xsd:complexTypename="messenger_serializer">
365+
<xsd:sequence>
366+
<xsd:elementname="context"type="metadata"minOccurs="0"maxOccurs="unbounded" />
367+
</xsd:sequence>
368+
<xsd:attributename="format"type="xsd:string" />
369+
<xsd:attributename="enabled"type="xsd:boolean" />
370+
</xsd:complexType>
371+
361372
<xsd:complexTypename="messenger_routing">
362373
<xsd:choiceminOccurs="0"maxOccurs="unbounded">
363374
<xsd:elementname="sender"type="messenger_routing_sender" />

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
useSymfony\Component\Config\Definition\Processor;
1919
useSymfony\Component\Lock\Store\SemaphoreStore;
2020
useSymfony\Component\Messenger\MessageBusInterface;
21+
useSymfony\Component\Serializer\Serializer;
2122

2223
class ConfigurationTestextends TestCase
2324
{
@@ -259,6 +260,13 @@ class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphor
259260
),
260261
),
261262
'adapters' =>array(),
263+
'serializer' =>array(
264+
'enabled' =>true,
265+
'format' =>'json',
266+
'context' =>array(),
267+
),
268+
'encoder' =>'messenger.transport.serializer',
269+
'decoder' =>'messenger.transport.serializer',
262270
),
263271
);
264272
}

‎src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_adapter.php‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?php
22

33
$container->loadFromExtension('framework',array(
4+
'serializer' =>true,
45
'messenger' =>array(
56
'adapters' =>array(
67
'default' =>'amqp://localhost/%2f/messages',
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
$container->loadFromExtension('framework',array(
4+
'messenger' =>array(
5+
'serializer' =>array(
6+
'format' =>'csv',
7+
'context' =>array('enable_max_depth' =>true),
8+
),
9+
),
10+
));
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
$container->loadFromExtension('framework',array(
4+
'serializer' =>array(
5+
'enabled' =>false,
6+
),
7+
'messenger' =>array(
8+
'serializer' =>array(
9+
'enabled' =>true,
10+
),
11+
'adapters' =>array(
12+
'default' =>'amqp://localhost/%2f/messages',
13+
),
14+
),
15+
));

‎src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_adapter.xml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
77

88
<framework:config>
9+
<framework:serializerenabled="true" />
910
<framework:messenger>
1011
<framework:adaptername="default"dsn="amqp://localhost/%2f/messages" />
1112
<framework:adaptername="customised"dsn="amqp://localhost/%2f/messages?exchange_name=exchange_name">
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<containerxmlns="http://symfony.com/schema/dic/services"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns:framework="http://symfony.com/schema/dic/symfony"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
6+
http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
7+
8+
<framework:config>
9+
<framework:messenger>
10+
<framework:serializerformat="csv">
11+
<framework:context>
12+
<framework:enable_max_depth>true</framework:enable_max_depth>
13+
</framework:context>
14+
</framework:serializer>
15+
</framework:messenger>
16+
</framework:config>
17+
</container>

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp