Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0952835

Browse files
committed
Allow to configure or disable the message bus to use
1 parent 4537f85 commit 0952835

25 files changed

+437
-12
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1782,6 +1782,9 @@ private function addNotifierSection(ArrayNodeDefinition $rootNode)
17821782
->arrayNode('notifier')
17831783
->info('Notifier configuration')
17841784
->{!class_exists(FullStack::class) && class_exists(Notifier::class) ? 'canBeDisabled' : 'canBeEnabled'}()
1785+
->children()
1786+
->scalarNode('message_bus')->defaultNull()->info('The message bus to use. Defaults to the default bus if the Messenger component is installed.')->end()
1787+
->end()
17851788
->fixXmlConfig('chatter_transport')
17861789
->children()
17871790
->arrayNode('chatter_transports')

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

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2208,17 +2208,26 @@ private function registerNotifierConfiguration(array $config, ContainerBuilder $
22082208
$container->removeDefinition('notifier.channel.email');
22092209
}
22102210

2211+
$servicesWithBusArgument = ['texter', 'chatter', 'notifier.channel.chat', 'notifier.channel.email', 'notifier.channel.sms'];
2212+
if (false === $messageBus = $config['message_bus']) {
2213+
foreach ($servicesWithBusArgument as $serviceId) {
2214+
if ($container->hasDefinition($serviceId)) {
2215+
$container->getDefinition($serviceId)->replaceArgument(1, null);
2216+
}
2217+
}
2218+
} else {
2219+
foreach ($servicesWithBusArgument as $serviceId) {
2220+
if ($container->hasDefinition($serviceId)) {
2221+
$container->getDefinition($serviceId)->setArgument(0, null);
2222+
$container->getDefinition($serviceId)->replaceArgument(1, $messageBus ? new Reference($messageBus) : new Reference('messenger.default_bus', ContainerInterface::NULL_ON_INVALID_REFERENCE));
2223+
}
2224+
}
2225+
}
2226+
22112227
if ($this->messengerConfigEnabled) {
22122228
if ($config['notification_on_failed_messages']) {
22132229
$container->getDefinition('notifier.failed_message_listener')->addTag('kernel.event_subscriber');
22142230
}
2215-
2216-
// as we have a bus, the channels don't need the transports
2217-
$container->getDefinition('notifier.channel.chat')->setArgument(0, null);
2218-
if ($container->hasDefinition('notifier.channel.email')) {
2219-
$container->getDefinition('notifier.channel.email')->setArgument(0, null);
2220-
}
2221-
$container->getDefinition('notifier.channel.sms')->setArgument(0, null);
22222231
}
22232232

22242233
$container->getDefinition('notifier.channel_policy')->setArgument(0, $config['channel_policy']);

src/Symfony/Bundle/FrameworkBundle/Resources/config/notifier.php

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,24 @@
4646
->tag('notifier.channel', ['channel' => 'browser'])
4747

4848
->set('notifier.channel.chat', ChatChannel::class)
49-
->args([service('chatter.transports'), service('messenger.default_bus')->ignoreOnInvalid()])
49+
->args([
50+
service('chatter.transports'),
51+
abstract_arg('message bus'),
52+
])
5053
->tag('notifier.channel', ['channel' => 'chat'])
5154

5255
->set('notifier.channel.sms', SmsChannel::class)
53-
->args([service('texter.transports'), service('messenger.default_bus')->ignoreOnInvalid()])
56+
->args([
57+
service('texter.transports'),
58+
abstract_arg('message bus'),
59+
])
5460
->tag('notifier.channel', ['channel' => 'sms'])
5561

5662
->set('notifier.channel.email', EmailChannel::class)
57-
->args([service('mailer.transports'), service('messenger.default_bus')->ignoreOnInvalid()])
63+
->args([
64+
service('mailer.transports'),
65+
abstract_arg('message bus'),
66+
])
5867
->tag('notifier.channel', ['channel' => 'email'])
5968

6069
->set('notifier.monolog_handler', NotifierHandler::class)
@@ -66,7 +75,7 @@
6675
->set('chatter', Chatter::class)
6776
->args([
6877
service('chatter.transports'),
69-
service('messenger.default_bus')->ignoreOnInvalid(),
78+
abstract_arg('message bus'),
7079
service('event_dispatcher')->ignoreOnInvalid(),
7180
])
7281

@@ -86,7 +95,7 @@
8695
->set('texter', Texter::class)
8796
->args([
8897
service('texter.transports'),
89-
service('messenger.default_bus')->ignoreOnInvalid(),
98+
abstract_arg('message bus'),
9099
service('event_dispatcher')->ignoreOnInvalid(),
91100
])
92101

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

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
<xsd:element name="mailer" type="mailer" minOccurs="0" maxOccurs="1" />
3636
<xsd:element name="http-cache" type="http_cache" minOccurs="0" maxOccurs="1" />
3737
<xsd:element name="rate-limiter" type="rate_limiter" minOccurs="0" maxOccurs="1" />
38+
<xsd:element name="notifier" type="notifier" minOccurs="0" maxOccurs="1" />
3839
</xsd:choice>
3940

4041
<xsd:attribute name="http-method-override" type="xsd:boolean" />
@@ -642,6 +643,44 @@
642643
</xsd:sequence>
643644
</xsd:complexType>
644645

646+
<xsd:complexType name="notifier">
647+
<xsd:sequence>
648+
<xsd:element name="chatter-transport" type="chatter-transport" minOccurs="0" maxOccurs="unbounded" />
649+
<xsd:element name="texter-transport" type="texter-transport" minOccurs="0" maxOccurs="unbounded" />
650+
<xsd:element name="channel-policy" type="channel-policy" minOccurs="0" maxOccurs="unbounded" />
651+
<xsd:element name="admin-recipients" type="admin-recipients" minOccurs="0" maxOccurs="1" />
652+
</xsd:sequence>
653+
<xsd:attribute name="enabled" type="xsd:boolean" />
654+
<xsd:attribute name="notification-on-failed-messages" type="xsd:boolean" />
655+
<xsd:attribute name="message-bus" type="xsd:string" />
656+
</xsd:complexType>
657+
658+
<xsd:complexType name="chatter-transport" mixed="true">
659+
<xsd:attribute name="name" type="xsd:string" use="required"/>
660+
</xsd:complexType>
661+
662+
<xsd:complexType name="texter-transport" mixed="true">
663+
<xsd:attribute name="name" type="xsd:string" use="required"/>
664+
</xsd:complexType>
665+
666+
<xsd:complexType name="channel-policy" mixed="true">
667+
<xsd:sequence>
668+
<xsd:element name="channel" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
669+
</xsd:sequence>
670+
<xsd:attribute name="name" type="xsd:string" use="required" />
671+
</xsd:complexType>
672+
673+
<xsd:complexType name="admin-recipients" mixed="true">
674+
<xsd:sequence>
675+
<xsd:element name="admin-recipient" type="admin-recipient" minOccurs="1" maxOccurs="unbounded" />
676+
</xsd:sequence>
677+
</xsd:complexType>
678+
679+
<xsd:complexType name="admin-recipient" mixed="true">
680+
<xsd:attribute name="email" type="xsd:string" use="required" />
681+
<xsd:attribute name="phone" type="xsd:string" />
682+
</xsd:complexType>
683+
645684
<xsd:complexType name="http_cache">
646685
<xsd:sequence>
647686
<xsd:element name="private-header" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,7 @@ class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphor
541541
],
542542
'notifier' => [
543543
'enabled' => !class_exists(FullStack::class) && class_exists(Notifier::class),
544+
'message_bus' => null,
544545
'chatter_transports' => [],
545546
'texter_transports' => [],
546547
'channel_policy' => [],
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\BarMessage;
4+
use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage;
5+
6+
$container->loadFromExtension('framework', [
7+
'messenger' => null,
8+
'mailer' => [
9+
'dsn' => 'smtp://example.com',
10+
],
11+
'notifier' => [
12+
'enabled' => true,
13+
'message_bus' => null,
14+
'notification_on_failed_messages' => true,
15+
'chatter_transports' => [
16+
'slack' => 'null'
17+
],
18+
'texter_transports' => [
19+
'twilio' => 'null'
20+
],
21+
'channel_policy' => [
22+
'low' => ['slack'],
23+
'high' => ['slack', 'twilio'],
24+
],
25+
'admin_recipients' => [
26+
['email' => '[email protected]', 'phone' => '+490815',],
27+
]
28+
],
29+
]);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
$container->loadFromExtension('framework', [
4+
'mailer' => [
5+
'dsn' => 'smtp://example.com',
6+
],
7+
'notifier' => [
8+
'message_bus' => false,
9+
'chatter_transports' => [
10+
'test' => 'null'
11+
],
12+
'texter_transports' => [
13+
'test' => 'null'
14+
],
15+
],
16+
]);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
$container->loadFromExtension('framework', [
4+
'mailer' => [
5+
'dsn' => 'smtp://example.com',
6+
],
7+
'notifier' => [
8+
'message_bus' => 'app.another_bus',
9+
'chatter_transports' => [
10+
'test' => 'null'
11+
],
12+
'texter_transports' => [
13+
'test' => 'null'
14+
],
15+
],
16+
]);
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\BarMessage;
4+
use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage;
5+
6+
$container->loadFromExtension('framework', [
7+
'messenger' => null,
8+
'notifier' => [
9+
'enabled' => true,
10+
'message_bus' => null,
11+
'notification_on_failed_messages' => true,
12+
'chatter_transports' => [
13+
'slack' => 'null'
14+
],
15+
'texter_transports' => [
16+
'twilio' => 'null'
17+
],
18+
'channel_policy' => [
19+
'low' => ['slack'],
20+
'high' => ['slack', 'twilio'],
21+
],
22+
'admin_recipients' => [
23+
['email' => '[email protected]', 'phone' => '+490815',],
24+
]
25+
],
26+
]);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\BarMessage;
4+
use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage;
5+
6+
$container->loadFromExtension('framework', [
7+
'mailer' => [
8+
'dsn' => 'smtp://example.com',
9+
],
10+
'notifier' => [
11+
'enabled' => true,
12+
'message_bus' => null,
13+
'notification_on_failed_messages' => true,
14+
'chatter_transports' => [
15+
'slack' => 'null'
16+
],
17+
'texter_transports' => [
18+
'twilio' => 'null'
19+
],
20+
'channel_policy' => [
21+
'low' => ['slack'],
22+
'high' => ['slack', 'twilio'],
23+
],
24+
'admin_recipients' => [
25+
['email' => '[email protected]', 'phone' => '+490815',],
26+
]
27+
],
28+
]);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\BarMessage;
4+
use Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage;
5+
6+
$container->loadFromExtension('framework', [
7+
'notifier' => [
8+
'enabled' => true,
9+
],
10+
]);
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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:messenger enabled="true" />
10+
<framework:mailer dsn="smtp://example.com" />
11+
<framework:notifier enabled="true" message-bus="null" notification-on-failed-messages="true">
12+
<framework:chatter-transport name="slack">null</framework:chatter-transport>
13+
<framework:texter-transport name="twilio">null</framework:texter-transport>
14+
<framework:channel-policy name="low">slack</framework:channel-policy>
15+
<framework:channel-policy name="high">twilio</framework:channel-policy>
16+
<framework:admin-recipients>
17+
<framework:admin-recipient email="[email protected]" phone="+490815" />
18+
</framework:admin-recipients>
19+
</framework:notifier>
20+
</framework:config>
21+
</container>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" ?>
2+
3+
<container xmlns="http://symfony.com/schema/dic/services"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xmlns:framework="http://symfony.com/schema/dic/symfony"
6+
xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd
7+
http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
8+
9+
<framework:config>
10+
<framework:mailer dsn="smtp://example.com" />
11+
<framework:notifier enabled="true" message-bus="false">
12+
<framework:chatter-transport name="test">null</framework:chatter-transport>
13+
<framework:texter-transport name="test">null</framework:texter-transport>
14+
</framework:notifier>
15+
</framework:config>
16+
</container>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" ?>
2+
3+
<container xmlns="http://symfony.com/schema/dic/services"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xmlns:framework="http://symfony.com/schema/dic/symfony"
6+
xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd
7+
http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
8+
9+
<framework:config>
10+
<framework:mailer dsn="smtp://example.com" />
11+
<framework:notifier enabled="true" message-bus="app.another_bus">
12+
<framework:chatter-transport name="test">null</framework:chatter-transport>
13+
<framework:texter-transport name="test">null</framework:texter-transport>
14+
</framework:notifier>
15+
</framework:config>
16+
</container>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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:messenger enabled="true" />
10+
<framework:notifier enabled="true" message-bus="null" notification-on-failed-messages="true">
11+
<framework:chatter-transport name="slack">null</framework:chatter-transport>
12+
<framework:texter-transport name="twilio">null</framework:texter-transport>
13+
<framework:channel-policy name="low">slack</framework:channel-policy>
14+
<framework:channel-policy name="high">twilio</framework:channel-policy>
15+
<framework:admin-recipients>
16+
<framework:admin-recipient email="[email protected]" phone="+490815" />
17+
</framework:admin-recipients>
18+
</framework:notifier>
19+
</framework:config>
20+
</container>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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:mailer dsn="smtp://example.com" />
10+
<framework:notifier enabled="true" message-bus="null" notification-on-failed-messages="true">
11+
<framework:chatter-transport name="slack">null</framework:chatter-transport>
12+
<framework:texter-transport name="twilio">null</framework:texter-transport>
13+
<framework:channel-policy name="low">slack</framework:channel-policy>
14+
<framework:channel-policy name="high">twilio</framework:channel-policy>
15+
<framework:admin-recipients>
16+
<framework:admin-recipient email="[email protected]" phone="+490815" />
17+
</framework:admin-recipients>
18+
</framework:notifier>
19+
</framework:config>
20+
</container>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
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:notifier enabled="true"></framework:notifier>
10+
</framework:config>
11+
</container>

0 commit comments

Comments
 (0)