Skip to content

Commit 464f326

Browse files
committed
[Messenger] Improve error message when routing to an invalid transport (closes #31613)
1 parent 693cbff commit 464f326

File tree

11 files changed

+73
-3
lines changed

11 files changed

+73
-3
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1746,6 +1746,10 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
17461746

17471747
// make sure senderAliases contains all senders
17481748
foreach ($messageConfiguration['senders'] as $sender) {
1749+
if (!isset($senderAliases[$sender])) {
1750+
throw new LogicException(sprintf('Invalid Messenger routing configuration: the "%s" class is being routed to a sender called "%s". This is not a valid transport or service id.', $message, $sender));
1751+
}
1752+
17491753
if (!isset($senderAliases[$sender])) {
17501754
$senderAliases[$sender] = $sender;
17511755
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,10 @@
99
FooMessage::class => ['sender.bar', 'sender.biz'],
1010
BarMessage::class => 'sender.foo',
1111
],
12+
'transports' => [
13+
'sender.biz' => 'null://',
14+
'sender.bar' => 'null://',
15+
'sender.foo' => 'null://',
16+
],
1217
],
1318
]);

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
],
1616
'transports' => [
1717
'amqp' => 'amqp://localhost/%2f/messages',
18+
'audit' => 'null://',
1819
],
1920
],
2021
]);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
$container->loadFromExtension('framework', [
4+
'serializer' => true,
5+
'messenger' => [
6+
'serializer' => [
7+
'default_serializer' => 'messenger.transport.symfony_serializer',
8+
],
9+
'routing' => [
10+
'Symfony\Component\Messenger\Tests\Fixtures\DummyMessage' => 'invalid',
11+
],
12+
'transports' => [
13+
'amqp' => 'amqp://localhost/%2f/messages',
14+
],
15+
],
16+
]);

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
<framework:routing message-class="Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\BarMessage">
1515
<framework:sender service="sender.foo" />
1616
</framework:routing>
17+
<framework:transport name="sender.bar" dsn="null://" />
18+
<framework:transport name="sender.biz" dsn="null://" />
19+
<framework:transport name="sender.foo" dsn="null://" />
1720
</framework:messenger>
1821
</framework:config>
1922
</container>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<framework:sender service="amqp" />
2222
</framework:routing>
2323
<framework:transport name="amqp" dsn="amqp://localhost/%2f/messages" />
24+
<framework:transport name="audit" dsn="null://" />
2425
</framework:messenger>
2526
</framework:config>
2627
</container>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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 https://symfony.com/schema/dic/services/services-1.0.xsd
6+
http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
7+
8+
<framework:config>
9+
<framework:serializer enabled="true" />
10+
<framework:messenger>
11+
<framework:serializer default-serializer="messenger.transport.symfony_serializer" />
12+
<framework:routing message-class="Symfony\Component\Messenger\Tests\Fixtures\DummyMessage">
13+
<framework:sender service="invalid" />
14+
</framework:routing>
15+
<framework:transport name="amqp" dsn="amqp://localhost/%2f/messages" />
16+
</framework:messenger>
17+
</framework:config>
18+
</container>

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,7 @@ framework:
33
routing:
44
'Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage': ['sender.bar', 'sender.biz']
55
'Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\BarMessage': 'sender.foo'
6+
transports:
7+
sender.biz: 'null://'
8+
sender.bar: 'null://'
9+
sender.foo: 'null://'

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ framework:
1010
'*': amqp
1111
transports:
1212
amqp: 'amqp://localhost/%2f/messages'
13+
audit: 'null://'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
framework:
2+
serializer: true
3+
messenger:
4+
serializer:
5+
default_serializer: messenger.transport.symfony_serializer
6+
routing:
7+
'Symfony\Component\Messenger\Tests\Fixtures\DummyMessage': invalid
8+
transports:
9+
amqp: 'amqp://localhost/%2f/messages'

0 commit comments

Comments
 (0)