Skip to content

Commit 3248240

Browse files
authored
Merge pull request #1702 from deguif/fix-messenger-integration
Fix messenger integration
2 parents 820047d + bab8ecc commit 3248240

File tree

7 files changed

+48
-9
lines changed

7 files changed

+48
-9
lines changed

CHANGELOG-6.0.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ in 6.0 versions.
66

77
### 6.0.0-BETA3 (2020-xx-xx)
88

9+
* Fixed `symfony/messenger` integration.
10+
911
### 6.0.0-BETA2 (2020-09-24)
1012

1113
* Added support for queued messages via Symfony Messenger.

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
"symfony/console": "^4.4 || ^5.1",
3838
"symfony/dependency-injection": "^4.4 || ^5.1",
3939
"symfony/framework-bundle": "^4.4 || ^5.1",
40-
"symfony/messenger": "^4.4 || ^5.1",
4140
"symfony/property-access": "^4.4 || ^5.1"
4241
},
4342
"require-dev": {
@@ -53,6 +52,7 @@
5352
"knplabs/knp-components": "^2.3",
5453
"phpunit/phpunit": "^8.5",
5554
"symfony/expression-language": "^4.4 || ^5.1",
55+
"symfony/messenger": "^4.4 || ^5.1",
5656
"symfony/serializer": "^4.4 || ^5.1",
5757
"symfony/twig-bundle": "^4.4 || ^5.1",
5858
"symfony/web-profiler-bundle": "^4.4 || ^5.1",

src/DependencyInjection/Configuration.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ public function getConfigTreeBuilder()
5454
->info('Defaults to the first index defined')
5555
->end()
5656
->scalarNode('default_manager')->defaultValue('orm')->end()
57+
->arrayNode('messenger')
58+
->canBeEnabled()
59+
->children()
60+
->scalarNode('message_bus')->defaultNull()->end()
61+
->end()
62+
->end()
5763
->arrayNode('serializer')
5864
->treatNullLike([])
5965
->children()

src/DependencyInjection/FOSElasticaExtension.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@
1919
use Symfony\Component\DependencyInjection\ChildDefinition;
2020
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
2121
use Symfony\Component\DependencyInjection\ContainerBuilder;
22+
use Symfony\Component\DependencyInjection\Exception\LogicException;
2223
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
2324
use Symfony\Component\DependencyInjection\Reference;
2425
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
26+
use Symfony\Component\Messenger\MessageBusInterface;
2527

2628
class FOSElasticaExtension extends Extension
2729
{
@@ -80,6 +82,10 @@ public function load(array $configs, ContainerBuilder $container)
8082
$config['default_index'] = reset($keys);
8183
}
8284

85+
if ($this->isConfigEnabled($container, $config['messenger'])) {
86+
$this->registerMessengerConfiguration($config['messenger'], $container, $loader);
87+
}
88+
8389
if (isset($config['serializer'])) {
8490
$loader->load('serializer.xml');
8591

@@ -739,4 +745,17 @@ private function getClient(string $clientName): Reference
739745

740746
return $this->clients[$clientName]['reference'];
741747
}
748+
749+
private function registerMessengerConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader): void
750+
{
751+
if (!interface_exists(MessageBusInterface::class)) {
752+
throw new LogicException('Messenger support cannot be enabled as the Messenger component is not installed. Try running "composer require symfony/messenger".');
753+
}
754+
755+
$loader->load('messenger.xml');
756+
757+
$container->getDefinition('fos_elastica.async_pager_persister')
758+
->replaceArgument(2, $config['message_bus'] ? new Reference($config['message_bus']) : new Reference('messenger.default_bus'))
759+
;
760+
}
742761
}

src/Resources/config/messenger.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
3+
<container xmlns="http://symfony.com/schema/dic/services"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
6+
7+
<services>
8+
<service id="fos_elastica.async_pager_persister" class="FOS\ElasticaBundle\Persister\AsyncPagerPersister">
9+
<argument type="service" id="fos_elastica.pager_persister_registry" />
10+
<argument type="service" id="fos_elastica.pager_provider_registry" />
11+
<argument /> <!-- message bus-->
12+
13+
<tag name="fos_elastica.pager_persister" persisterName="async" />
14+
</service>
15+
</services>
16+
</container>

src/Resources/config/persister.xml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,6 @@
1212
<tag name="fos_elastica.pager_persister" persisterName="in_place" />
1313
</service>
1414

15-
<service id="fos_elastica.async_pager_persister" class="FOS\ElasticaBundle\Persister\AsyncPagerPersister">
16-
<argument type="service" id="fos_elastica.pager_persister_registry" />
17-
<argument type="service" id="fos_elastica.pager_provider_registry" />
18-
<argument type="service" id="messenger.default_bus" />
19-
20-
<tag name="fos_elastica.pager_persister" persisterName="async" />
21-
</service>
22-
2315
<service id="fos_elastica.pager_persister_registry" class="FOS\ElasticaBundle\Persister\PagerPersisterRegistry">
2416
<argument type="tagged_locator" tag="fos_elastica.pager_persister" index-by="persisterName" />
2517
</service>

tests/Unit/DependencyInjection/ConfigurationTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ public function testUnconfiguredConfiguration()
3636
'indexes' => [],
3737
'index_templates' => [],
3838
'default_manager' => 'orm',
39+
'messenger' => [
40+
'enabled' => false,
41+
'message_bus' => null,
42+
],
3943
], $configuration);
4044
}
4145

0 commit comments

Comments
 (0)