Skip to content

Commit 30be838

Browse files
committed
Add Beanstalkd Messenger bridge
1 parent 6b48511 commit 30be838

27 files changed

+1242
-0
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@
8383
use Symfony\Component\Mailer\Mailer;
8484
use Symfony\Component\Messenger\Bridge\AmazonSqs\Transport\AmazonSqsTransportFactory;
8585
use Symfony\Component\Messenger\Bridge\Amqp\Transport\AmqpTransportFactory;
86+
use Symfony\Component\Messenger\Bridge\Beanstalkd\Transport\BeanstalkdTransportFactory;
8687
use Symfony\Component\Messenger\Bridge\Redis\Transport\RedisTransportFactory;
8788
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
8889
use Symfony\Component\Messenger\MessageBus;
@@ -345,6 +346,8 @@ public function load(array $configs, ContainerBuilder $container)
345346
$container->removeDefinition('messenger.transport.redis.factory');
346347
}
347348
}
349+
350+
$container->removeDefinition('messenger.transport.beanstalkd.factory');
348351
}
349352

350353
if ($this->httpClientConfigEnabled = $this->isConfigEnabled($container, $config['http_client'])) {
@@ -1645,6 +1648,10 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
16451648
$container->getDefinition('messenger.transport.sqs.factory')->addTag('messenger.transport_factory');
16461649
}
16471650

1651+
if (class_exists(BeanstalkdTransportFactory::class)) {
1652+
$container->getDefinition('messenger.transport.beanstalkd.factory')->addTag('messenger.transport_factory');
1653+
}
1654+
16481655
if (null === $config['default_bus'] && 1 === \count($config['buses'])) {
16491656
$config['default_bus'] = key($config['buses']);
16501657
}
@@ -1703,6 +1710,7 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
17031710
$container->removeDefinition('messenger.transport.amqp.factory');
17041711
$container->removeDefinition('messenger.transport.redis.factory');
17051712
$container->removeDefinition('messenger.transport.sqs.factory');
1713+
$container->removeDefinition('messenger.transport.beanstalkd.factory');
17061714
} else {
17071715
$container->getDefinition('messenger.transport.symfony_serializer')
17081716
->replaceArgument(1, $config['serializer']['symfony_serializer']['format'])

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@
7171

7272
<service id="messenger.transport.redis.factory" class="Symfony\Component\Messenger\Bridge\Redis\Transport\RedisTransportFactory"/>
7373

74+
<service id="messenger.transport.beanstalkd.factory" class="Symfony\Component\Messenger\Bridge\Beanstalkd\Transport\BeanstalkdTransportFactory"/>
75+
7476
<service id="messenger.transport.sync.factory" class="Symfony\Component\Messenger\Transport\Sync\SyncTransportFactory">
7577
<tag name="messenger.transport_factory" />
7678
<argument type="service" id="messenger.routable_message_bus" />

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
@@ -22,6 +22,7 @@
2222
],
2323
'failed' => 'in-memory:///',
2424
'redis' => 'redis://127.0.0.1:6379/messages',
25+
'beanstalkd' => 'beanstalkd://127.0.0.1:11300',
2526
],
2627
],
2728
]);

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
@@ -20,6 +20,7 @@
2020
</framework:transport>
2121
<framework:transport name="failed" dsn="in-memory:///" />
2222
<framework:transport name="redis" dsn="redis://127.0.0.1:6379/messages" />
23+
<framework:transport name="beanstalkd" dsn="beanstalkd://127.0.0.1:11300" />
2324
</framework:messenger>
2425
</framework:config>
2526
</container>

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
@@ -19,3 +19,4 @@ framework:
1919
max_delay: 100
2020
failed: 'in-memory:///'
2121
redis: 'redis://127.0.0.1:6379/messages'
22+
beanstalkd: 'beanstalkd://127.0.0.1:11300'

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,16 @@ public function testMessengerTransports()
635635

636636
$this->assertTrue($container->hasDefinition('messenger.transport.redis.factory'));
637637

638+
$this->assertTrue($container->hasDefinition('messenger.transport.beanstalkd'));
639+
$transportFactory = $container->getDefinition('messenger.transport.beanstalkd')->getFactory();
640+
$transportArguments = $container->getDefinition('messenger.transport.beanstalkd')->getArguments();
641+
642+
$this->assertEquals([new Reference('messenger.transport_factory'), 'createTransport'], $transportFactory);
643+
$this->assertCount(3, $transportArguments);
644+
$this->assertSame('beanstalkd://127.0.0.1:11300', $transportArguments[0]);
645+
646+
$this->assertTrue($container->hasDefinition('messenger.transport.beanstalkd.factory'));
647+
638648
$this->assertSame(10, $container->getDefinition('messenger.retry.multiplier_retry_strategy.customised')->getArgument(0));
639649
$this->assertSame(7, $container->getDefinition('messenger.retry.multiplier_retry_strategy.customised')->getArgument(1));
640650
$this->assertSame(3, $container->getDefinition('messenger.retry.multiplier_retry_strategy.customised')->getArgument(2));
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
/Tests export-ignore
2+
/phpunit.xml.dist export-ignore
3+
/.gitignore export-ignore
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
vendor/
2+
composer.lock
3+
phpunit.xml
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CHANGELOG
2+
=========
3+
4+
5.1.0
5+
-----
6+
7+
* Introduced the Beanstalkd bridge.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
Copyright (c) 2018-2020 Fabien Potencier
2+
3+
Permission is hereby granted, free of charge, to any person obtaining a copy
4+
of this software and associated documentation files (the "Software"), to deal
5+
in the Software without restriction, including without limitation the rights
6+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7+
copies of the Software, and to permit persons to whom the Software is furnished
8+
to do so, subject to the following conditions:
9+
10+
The above copyright notice and this permission notice shall be included in all
11+
copies or substantial portions of the Software.
12+
13+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19+
THE SOFTWARE.

0 commit comments

Comments
 (0)