Skip to content

Commit 79f0a20

Browse files
committed
Review configuration for messenger
1 parent 820047d commit 79f0a20

File tree

4 files changed

+41
-8
lines changed

4 files changed

+41
-8
lines changed

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>

0 commit comments

Comments
 (0)