8000 Relax Messenger config and fix some bugs · symfony/symfony@fd8c675 · GitHub
[go: up one dir, main page]

Skip to content

Commit fd8c675

Browse files
committed
Relax Messenger config and fix some bugs
1 parent 47da23c commit fd8c675

20 files changed

+75
-8
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1010,7 +1010,7 @@ function ($a) {
10101010
->end()
10111011
->end()
10121012
->arrayNode('serializer')
1013-
->canBeDisabled()
1013+
->{!class_exists(FullStack::class) && class_exists(Serializer::class) ? 'canBeDisabled' : 'canBeEnabled'}()
10141014
->addDefaultsIfNotSet()
10151015
->children()
10161016
->scalarNode('format')->defaultValue('json')->end()

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1449,15 +1449,18 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
14491449
$loader->load('messenger.xml');
14501450

14511451
if ($this->isConfigEnabled($container, $config['serializer'])) {
1452-
if (\count($config['transports']) > 0 && !$this->isConfigEnabled($container, $serializerConfig)) {
1453-
throw new LogicException('Using the default encoder/decoder, Symfony Messenger requires the Serializer. Enable it or install it by running "composer require symfony/serializer-pack".');
1452+
if (!$this->isConfigEnabled($container, $serializerConfig)) {
1453+
throw new LogicException('The default Messenger serializer cannot be enabled as the Serializer support is not available. Try enable it or install it by running "composer require symfony/serializer".');
14541454
}
14551455

14561456
$container->getDefinition('messenger.transport.serializer')
14571457
->replaceArgument(1, $config['serializer']['format'])
14581458
->replaceArgument(2, $config['serializer']['context']);
14591459
} else {
14601460
$container->removeDefinition('messenger.transport.serializer');
1461+
if ('messenger.transport.serializer' === $config['encoder'] || 'messenger.transport.serializer' === $config['decoder']) {
1462+
$container->removeDefinition('messenger.transport.amqp.factory');
1463+
}
14611464
}
14621465

14631466
$container->setAlias('messenger.transport.encoder', $config['encoder']);
@@ -1506,6 +1509,10 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
15061509
$container->getDefinition('messenger.asynchronous.routing.sender_locator')->replaceArgument(1, $messageToSenderIdsMapping);
15071510

15081511
foreach ($config['transports'] as $name => $transport) {
1512+
if (0 === strpos($transport['dsn'], 'amqp://') && !$container->hasDefinition('messenger.transport.amqp.factory')) {
1513+
throw new LogicException('The default AMQP transport is not available. Make sure you have installed and enabled the Serializer component. Try enable it or install it by running "composer require symfony/serializer".');
1514+
}
1515+
15091516
$senderDefinition = (new Definition(SenderInterface::class))
15101517
->setFactory(array(new Reference('messenger.transport_factory'), 'createSender'))
15111518
->setArguments(array($transport['dsn'], $transport['options']))

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@
5959
<argument type="collection" />
6060
</service>
6161

62-
<!-- Adapters -->
62+
<!-- Transports -->
6363
<service id="messenger.transport_factory" class="Symfony\Component\Messenger\Transport\Factory\ChainTransportFactory">
6464
<argument type="tagged" tag="messenger.transport_factory" />
6565
</service>
6666

67-
<service id="messenger.adapter.amqp.factory" class="Symfony\Component\Messenger\Transport\AmqpExt\AmqpTransportFactory">
67+
<service id="messenger.transport.amqp.factory" class="Symfony\Component\Messenger\Transport\AmqpExt\AmqpTransportFactory">
6868
<argument type="service" id="messenger.transport.encoder" />
6969
<argument type="service" id="messenger.transport.decoder" />
7070
<argument>%kernel.debug%</argument>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphor
256256
'routing' => array(),
257257
'transports' => array(),
258258
'serializer' => array(
259-
'enabled' => true,
259+
'enabled' => !class_exists(FullStack::class),
260260
'format' => 'json',
261261
'context' => array(),
262262
),

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
$container->loadFromExtension('framework', array(
77
'messenger' => array(
8+
'serializer' => false,
89
'routing' => array(
910
FooMessage::class => array('sender.bar', 'sender.biz'),
1011
BarMessage::class => 'sender.foo',
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
$container->loadFromExtension('framework', array(
4+
'messenger' => array(
5+
'serializer' => array(
6+
'enabled' => false,
7+
),
8+
'transports' => array(
9+
'default' => 'amqp://localhost/%2f/messages',
10+
),
11+
),
12+
));

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/messenger_transport.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
'serializer' => array(
67
'format' => 'csv',

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
@@ -3,6 +3,7 @@
33
$container->loadFromExtension('framework', array(
44
'serializer' => true,
55
'messenger' => array(
6+
'serializer' => true,
67
'transports' => array(
78
'default' => 'amqp://localhost/%2f/messages',
89
'customised' => array(

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,7 @@
44
'serializer' => array(
55
'enabled' => false,
66
),
7+
'messenger' => array(
8+
'serializer' => false,
9+
),
710
));

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
<framework:config>
99
<framework:messenger>
10+
<framework:serializer enabled="false" />
1011
<framework:routing message-class="Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage">
1112
<framework:sender service="sender.bar" />
1213
<framework:sender service="sender.biz" />
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<container xmlns="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:serializer enabled="false" />
11+
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
12+
</framework:messenger>
13+
</framework:config>
14+
</container>

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/messenger_transport.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:serializer enabled="true" />
910
<framework:messenger>
1011
<framework:serializer format="csv">
1112
<framework:context>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<framework:config>
99
<framework:serializer enabled="true" />
1010
<framework:messenger>
11+
<framework:serializer enabled="true" />
1112
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
1213
<framework:transport name="customised" dsn="amqp://localhost/%2f/messages?exchange_name=exchange_name">
1314
<framework:options>

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,8 @@
77

88
<framework:config>
99
<framework:serializer enabled="false" />
10+
<framework:messenger>
11+
<framework:serializer enabled="false" />
12+
</framework:messenger>
1013
</framework:config>
1114
</container>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
framework:
22
messenger:
3+
serializer: false
34
routing:
45
'Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage': ['sender.bar', 'sender.biz']
56
'Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\BarMessage': 'sender.foo'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
framework:
2+
messenger:
3+
serializer: false
4+
transports:
5+
default: 'amqp://localhost/%2f/messages'

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
framework:
2+
serializer: true
23
messenger:
34
serializer:
45
format: csv

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
framework:
22
serializer: true
33
messenger:
4+
serializer: true
45
transports:
56
default: 'amqp://localhost/%2f/messages'
67
customised:
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
framework:
22
serializer:
33
enabled: false
4+
messenger:
5+
serializer: false

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

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,8 @@ public function testWebLink()
526526
public function testMessenger()
527527
{
528528
$container = $this->createContainerFromFile('messenger');
529-
$this->assertTrue($container->has('message_bus'));
529+
$this->assertTrue($container->hasAlias('message_bus'));
530+
$this->assertFalse($container->hasDefinition('messenger.transport.amqp.factory'));
530531
}
531532

532533
public function testMessengerTransports()
@@ -556,6 +557,8 @@ public function testMessengerTransports()
556557
$this->assertCount(2, $receiverArguments);
557558
$this->assertSame('amqp://localhost/%2f/messages?exchange_name=exchange_name', $receiverArguments[0]);
558559
$this->assertSame(array('queue' => array('name' => 'Queue')), $receiverArguments[1]);
560+
561+
$this->assertTrue($container->hasDefinition('messenger.transport.amqp.factory'));
559562
}
560563

561564
public function testMessengerRouting()
@@ -574,13 +577,22 @@ public function testMessengerRouting()
574577

575578
/**
576579
* @expectedException \Symfony\Component\DependencyInjection\Exception\LogicException
577-
* @expectedExceptionMessage Using the default encoder/decoder, Symfony Messenger requires the Serializer. Enable it or install it by running "composer require symfony/serializer-pack".
580+
* @expectedExceptionMessage The default Messenger serializer cannot be enabled as the Serializer support is not available. Try enable it or install it by running "composer require symfony/serializer".
578581
*/
579582
public function testMessengerTransportConfigurationWithoutSerializer()
580583
{
581584
$this->createContainerFromFile('messenger_transport_no_serializer');
582585
}
583586

587+
/**
588+
* @expectedException \Symfony\Component\DependencyInjection\Exception\LogicException
589+
* @expectedExceptionMessage The default AMQP transport is not available. Make sure you have installed and enabled the Serializer component. Try enable it or install it by running "composer require symfony/serializer".
590+
*/
591+
public function testMessengerAMQPTransportConfigurationWithoutSerializer()
592+
{
593+
$this->createContainerFromFile('messenger_amqp_transport_no_serializer');
594+
}
595+
584596
public function testMessengerTransportConfiguration()
585597
{
586598
$container = $this->createContainerFromFile('messenger_transport');

0 commit comments

Comments
 (0)
0