Relax Messenger config and fix some bugs
This commit is contained in:
parent
cada38f520
commit
a05e2e2c3b
@ -1010,7 +1010,7 @@ class Configuration implements ConfigurationInterface
|
|||||||
->end()
|
->end()
|
||||||
->end()
|
->end()
|
||||||
->arrayNode('serializer')
|
->arrayNode('serializer')
|
||||||
->canBeDisabled()
|
->{!class_exists(FullStack::class) && class_exists(Serializer::class) ? 'canBeDisabled' : 'canBeEnabled'}()
|
||||||
->addDefaultsIfNotSet()
|
->addDefaultsIfNotSet()
|
||||||
->children()
|
->children()
|
||||||
->scalarNode('format')->defaultValue('json')->end()
|
->scalarNode('format')->defaultValue('json')->end()
|
||||||
|
@ -1449,8 +1449,8 @@ class FrameworkExtension extends Extension
|
|||||||
$loader->load('messenger.xml');
|
$loader->load('messenger.xml');
|
||||||
|
|
||||||
if ($this->isConfigEnabled($container, $config['serializer'])) {
|
if ($this->isConfigEnabled($container, $config['serializer'])) {
|
||||||
if (\count($config['transports']) > 0 && !$this->isConfigEnabled($container, $serializerConfig)) {
|
if (!$this->isConfigEnabled($container, $serializerConfig)) {
|
||||||
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".');
|
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-pack".');
|
||||||
}
|
}
|
||||||
|
|
||||||
$container->getDefinition('messenger.transport.serializer')
|
$container->getDefinition('messenger.transport.serializer')
|
||||||
@ -1458,6 +1458,9 @@ class FrameworkExtension extends Extension
|
|||||||
->replaceArgument(2, $config['serializer']['context']);
|
->replaceArgument(2, $config['serializer']['context']);
|
||||||
} else {
|
} else {
|
||||||
$container->removeDefinition('messenger.transport.serializer');
|
$container->removeDefinition('messenger.transport.serializer');
|
||||||
|
if ('messenger.transport.serializer' === $config['encoder'] || 'messenger.transport.serializer' === $config['decoder']) {
|
||||||
|
$container->removeDefinition('messenger.transport.amqp.factory');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$container->setAlias('messenger.transport.encoder', $config['encoder']);
|
$container->setAlias('messenger.transport.encoder', $config['encoder']);
|
||||||
@ -1506,6 +1509,10 @@ class FrameworkExtension extends Extension
|
|||||||
$container->getDefinition('messenger.asynchronous.routing.sender_locator')->replaceArgument(1, $messageToSenderIdsMapping);
|
$container->getDefinition('messenger.asynchronous.routing.sender_locator')->replaceArgument(1, $messageToSenderIdsMapping);
|
||||||
|
|
||||||
foreach ($config['transports'] as $name => $transport) {
|
foreach ($config['transports'] as $name => $transport) {
|
||||||
|
if (0 === strpos($transport['dsn'], 'amqp://') && !$container->hasDefinition('messenger.transport.amqp.factory')) {
|
||||||
|
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-pack".');
|
||||||
|
}
|
||||||
|
|
||||||
$senderDefinition = (new Definition(SenderInterface::class))
|
$senderDefinition = (new Definition(SenderInterface::class))
|
||||||
->setFactory(array(new Reference('messenger.transport_factory'), 'createSender'))
|
->setFactory(array(new Reference('messenger.transport_factory'), 'createSender'))
|
||||||
->setArguments(array($transport['dsn'], $transport['options']))
|
->setArguments(array($transport['dsn'], $transport['options']))
|
||||||
|
@ -256,7 +256,7 @@ class ConfigurationTest extends TestCase
|
|||||||
'routing' => array(),
|
'routing' => array(),
|
||||||
'transports' => array(),
|
'transports' => array(),
|
||||||
'serializer' => array(
|
'serializer' => array(
|
||||||
'enabled' => true,
|
'enabled' => !class_exists(FullStack::class),
|
||||||
'format' => 'json',
|
'format' => 'json',
|
||||||
'context' => array(),
|
'context' => array(),
|
||||||
),
|
),
|
||||||
|
@ -5,6 +5,7 @@ use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\BarMessage;
|
|||||||
|
|
||||||
$container->loadFromExtension('framework', array(
|
$container->loadFromExtension('framework', array(
|
||||||
'messenger' => array(
|
'messenger' => array(
|
||||||
|
'serializer' => false,
|
||||||
'routing' => array(
|
'routing' => array(
|
||||||
FooMessage::class => array('sender.bar', 'sender.biz'),
|
FooMessage::class => array('sender.bar', 'sender.biz'),
|
||||||
BarMessage::class => 'sender.foo',
|
BarMessage::class => 'sender.foo',
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$container->loadFromExtension('framework', array(
|
||||||
|
'messenger' => array(
|
||||||
|
'serializer' => array(
|
||||||
|
'enabled' => false,
|
||||||
|
),
|
||||||
|
'transports' => array(
|
||||||
|
'default' => 'amqp://localhost/%2f/messages',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
));
|
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$container->loadFromExtension('framework', array(
|
$container->loadFromExtension('framework', array(
|
||||||
|
'serializer' => true,
|
||||||
'messenger' => array(
|
'messenger' => array(
|
||||||
'serializer' => array(
|
'serializer' => array(
|
||||||
'format' => 'csv',
|
'format' => 'csv',
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
$container->loadFromExtension('framework', array(
|
$container->loadFromExtension('framework', array(
|
||||||
'serializer' => true,
|
'serializer' => true,
|
||||||
'messenger' => array(
|
'messenger' => array(
|
||||||
|
'serializer' => true,
|
||||||
'transports' => array(
|
'transports' => array(
|
||||||
'default' => 'amqp://localhost/%2f/messages',
|
'default' => 'amqp://localhost/%2f/messages',
|
||||||
'customised' => array(
|
'customised' => array(
|
||||||
|
@ -4,4 +4,7 @@ $container->loadFromExtension('framework', array(
|
|||||||
'serializer' => array(
|
'serializer' => array(
|
||||||
'enabled' => false,
|
'enabled' => false,
|
||||||
),
|
),
|
||||||
|
'messenger' => array(
|
||||||
|
'serializer' => false,
|
||||||
|
),
|
||||||
));
|
));
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
<framework:config>
|
<framework:config>
|
||||||
<framework:messenger>
|
<framework:messenger>
|
||||||
|
<framework:serializer enabled="false" />
|
||||||
<framework:routing message-class="Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage">
|
<framework:routing message-class="Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage">
|
||||||
<framework:sender service="sender.bar" />
|
<framework:sender service="sender.bar" />
|
||||||
<framework:sender service="sender.biz" />
|
<framework:sender service="sender.biz" />
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<container xmlns="http://symfony.com/schema/dic/services"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:framework="http://symfony.com/schema/dic/symfony"
|
||||||
|
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
|
||||||
|
http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
|
||||||
|
|
||||||
|
<framework:config>
|
||||||
|
<framework:messenger>
|
||||||
|
<framework:serializer enabled="false" />
|
||||||
|
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
|
||||||
|
</framework:messenger>
|
||||||
|
</framework:config>
|
||||||
|
</container>
|
@ -6,6 +6,7 @@
|
|||||||
http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
|
http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
|
||||||
|
|
||||||
<framework:config>
|
<framework:config>
|
||||||
|
<framework:serializer enabled="true" />
|
||||||
<framework:messenger>
|
<framework:messenger>
|
||||||
<framework:serializer format="csv">
|
<framework:serializer format="csv">
|
||||||
<framework:context>
|
<framework:context>
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
<framework:config>
|
<framework:config>
|
||||||
<framework:serializer enabled="true" />
|
<framework:serializer enabled="true" />
|
||||||
<framework:messenger>
|
<framework:messenger>
|
||||||
|
<framework:serializer enabled="true" />
|
||||||
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
|
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
|
||||||
<framework:transport name="customised" dsn="amqp://localhost/%2f/messages?exchange_name=exchange_name">
|
<framework:transport name="customised" dsn="amqp://localhost/%2f/messages?exchange_name=exchange_name">
|
||||||
<framework:options>
|
<framework:options>
|
||||||
|
@ -7,5 +7,8 @@
|
|||||||
|
|
||||||
<framework:config>
|
<framework:config>
|
||||||
<framework:serializer enabled="false" />
|
<framework:serializer enabled="false" />
|
||||||
|
<framework:messenger>
|
||||||
|
<framework:serializer enabled="false" />
|
||||||
|
</framework:messenger>
|
||||||
</framework:config>
|
</framework:config>
|
||||||
</container>
|
</container>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
framework:
|
framework:
|
||||||
messenger:
|
messenger:
|
||||||
|
serializer: false
|
||||||
routing:
|
routing:
|
||||||
'Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage': ['sender.bar', 'sender.biz']
|
'Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage': ['sender.bar', 'sender.biz']
|
||||||
'Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\BarMessage': 'sender.foo'
|
'Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\BarMessage': 'sender.foo'
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
framework:
|
||||||
|
messenger:
|
||||||
|
serializer: false
|
||||||
|
transports:
|
||||||
|
default: 'amqp://localhost/%2f/messages'
|
@ -1,4 +1,5 @@
|
|||||||
framework:
|
framework:
|
||||||
|
serializer: true
|
||||||
messenger:
|
messenger:
|
||||||
serializer:
|
serializer:
|
||||||
format: csv
|
format: csv
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
framework:
|
framework:
|
||||||
serializer: true
|
serializer: true
|
||||||
messenger:
|
messenger:
|
||||||
|
serializer: true
|
||||||
transports:
|
transports:
|
||||||
default: 'amqp://localhost/%2f/messages'
|
default: 'amqp://localhost/%2f/messages'
|
||||||
customised:
|
customised:
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
framework:
|
framework:
|
||||||
serializer:
|
serializer:
|
||||||
enabled: false
|
enabled: false
|
||||||
|
messenger:
|
||||||
|
serializer: false
|
||||||
|
@ -526,7 +526,8 @@ abstract class FrameworkExtensionTest extends TestCase
|
|||||||
public function testMessenger()
|
public function testMessenger()
|
||||||
{
|
{
|
||||||
$container = $this->createContainerFromFile('messenger');
|
$container = $this->createContainerFromFile('messenger');
|
||||||
$this->assertTrue($container->has('message_bus'));
|
$this->assertTrue($container->hasAlias('message_bus'));
|
||||||
|
$this->assertFalse($container->hasDefinition('messenger.transport.amqp.factory'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessengerTransports()
|
public function testMessengerTransports()
|
||||||
@ -556,6 +557,8 @@ abstract class FrameworkExtensionTest extends TestCase
|
|||||||
$this->assertCount(2, $receiverArguments);
|
$this->assertCount(2, $receiverArguments);
|
||||||
$this->assertSame('amqp://localhost/%2f/messages?exchange_name=exchange_name', $receiverArguments[0]);
|
$this->assertSame('amqp://localhost/%2f/messages?exchange_name=exchange_name', $receiverArguments[0]);
|
||||||
$this->assertSame(array('queue' => array('name' => 'Queue')), $receiverArguments[1]);
|
$this->assertSame(array('queue' => array('name' => 'Queue')), $receiverArguments[1]);
|
||||||
|
|
||||||
|
$this->assertTrue($container->hasDefinition('messenger.transport.amqp.factory'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMessengerRouting()
|
public function testMessengerRouting()
|
||||||
@ -574,13 +577,22 @@ abstract class FrameworkExtensionTest extends TestCase
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @expectedException \Symfony\Component\DependencyInjection\Exception\LogicException
|
* @expectedException \Symfony\Component\DependencyInjection\Exception\LogicException
|
||||||
* @expectedExceptionMessage Using the default encoder/decoder, Symfony Messenger requires the Serializer. Enable it or install it by running "composer require symfony/serializer-pack".
|
* @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-pack".
|
||||||
*/
|
*/
|
||||||
public function testMessengerTransportConfigurationWithoutSerializer()
|
public function testMessengerTransportConfigurationWithoutSerializer()
|
||||||
{
|
{
|
||||||
$this->createContainerFromFile('messenger_transport_no_serializer');
|
$this->createContainerFromFile('messenger_transport_no_serializer');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \Symfony\Component\DependencyInjection\Exception\LogicException
|
||||||
|
* @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-pack".
|
||||||
|
*/
|
||||||
|
public function testMessengerAMQPTransportConfigurationWithoutSerializer()
|
||||||
|
{
|
||||||
|
$this->createContainerFromFile('messenger_amqp_transport_no_serializer');
|
||||||
|
}
|
||||||
|
|
||||||
public function testMessengerTransportConfiguration()
|
public function testMessengerTransportConfiguration()
|
||||||
{
|
{
|
||||||
$container = $this->createContainerFromFile('messenger_transport');
|
$container = $this->createContainerFromFile('messenger_transport');
|
||||||
|
Reference in New Issue
Block a user