Skip to content

Commit fe8101f

Browse files
authored
Merge pull request #556 from php-enqueue/move-services-to-client-factory
[client] Move services definition to ClientFactory.
2 parents a4392ca + 5abf4dc commit fe8101f

17 files changed

+191
-179
lines changed

Diff for: pkg/enqueue-bundle/DependencyInjection/EnqueueExtension.php

+6-55
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,14 @@
66
use Enqueue\AsyncEventDispatcher\DependencyInjection\AsyncEventDispatcherExtension;
77
use Enqueue\Client\CommandSubscriberInterface;
88
use Enqueue\Client\TopicSubscriberInterface;
9-
use Enqueue\Client\TraceableProducer;
109
use Enqueue\JobQueue\Job;
1110
use Enqueue\Symfony\DependencyInjection\ClientFactory;
1211
use Enqueue\Symfony\DependencyInjection\TransportFactory;
1312
use Symfony\Component\Config\FileLocator;
1413
use Symfony\Component\Config\Resource\FileResource;
15-
use Symfony\Component\DependencyInjection\Alias;
1614
use Symfony\Component\DependencyInjection\ContainerBuilder;
1715
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
1816
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
19-
use Symfony\Component\DependencyInjection\Reference;
2017
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
2118

2219
final class EnqueueExtension extends Extension implements PrependExtensionInterface
@@ -38,61 +35,15 @@ public function load(array $configs, ContainerBuilder $container): void
3835
$this->setupAutowiringForProcessors($container);
3936

4037
$loader->load('client.yml');
41-
$loader->load('extensions/flush_spool_producer_extension.yml');
42-
$loader->load('extensions/exclusive_command_extension.yml');
38+
39+
$clientConfig = $config['client'];
40+
// todo
41+
$clientConfig['transport'] = $config['transport'];
42+
$clientConfig['consumption'] = $config['consumption'];
4343

4444
$clientFactory = new ClientFactory('default');
45+
$clientFactory->build($container, $clientConfig);
4546
$clientFactory->createDriver($container, $config['transport']);
46-
47-
$configDef = $container->getDefinition('enqueue.client.default.config');
48-
$configDef->setArguments([
49-
$config['client']['prefix'],
50-
$config['client']['app_name'],
51-
$config['client']['router_topic'],
52-
$config['client']['router_queue'],
53-
$config['client']['default_processor_queue'],
54-
$config['client']['router_processor'],
55-
// @todo should be driver options.
56-
$config['transport'],
57-
]);
58-
59-
$container->setParameter('enqueue.client.default.router_processor', $config['client']['router_processor']);
60-
$container->setParameter('enqueue.client.router_queue_name', $config['client']['router_queue']);
61-
$container->setParameter('enqueue.client.default_queue_name', $config['client']['default_processor_queue']);
62-
63-
if ($config['client']['traceable_producer']) {
64-
$container->register('enqueue.client.default.traceable_producer', TraceableProducer::class)
65-
->setDecoratedService('enqueue.client.default.producer')
66-
->setPublic(true)
67-
->addArgument(new Reference('enqueue.client.default.traceable_producer.inner'))
68-
;
69-
70-
// todo do alias only for default transport
71-
$container->setAlias(TraceableProducer::class, new Alias('enqueue.client.default.traceable_producer'));
72-
}
73-
74-
if ($config['client']['redelivered_delay_time']) {
75-
$loader->load('extensions/delay_redelivered_message_extension.yml');
76-
77-
$container->getDefinition('enqueue.client.default.delay_redelivered_message_extension')
78-
->replaceArgument(1, $config['client']['redelivered_delay_time'])
79-
;
80-
}
81-
82-
$locatorId = 'enqueue.locator';
83-
if ($container->hasDefinition($locatorId)) {
84-
$locator = $container->getDefinition($locatorId);
85-
$locator->replaceArgument(0, array_replace($locator->getArgument(0), [
86-
'enqueue.client.default.queue_consumer' => new Reference('enqueue.client.default.queue_consumer'),
87-
'enqueue.client.default.driver' => new Reference('enqueue.client.default.driver'),
88-
'enqueue.client.default.delegate_processor' => new Reference('enqueue.client.default.delegate_processor'),
89-
'enqueue.client.default.producer' => new Reference('enqueue.client.default.producer'),
90-
]));
91-
}
92-
93-
$container->getDefinition('enqueue.client.default.queue_consumer')
94-
->replaceArgument(4, $config['consumption']['receive_timeout'])
95-
;
9647
}
9748

9849
if ($config['job']) {

Diff for: pkg/enqueue-bundle/Resources/config/client.yml

+1-87
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,4 @@
11
services:
2-
services:
3-
enqueue.client.default.context:
4-
class: 'Interop\Queue\Context'
5-
factory: ['@enqueue.client.default.driver', 'getContext']
6-
7-
enqueue.client.default.driver_factory:
8-
class: 'Enqueue\Client\DriverFactory'
9-
arguments:
10-
- '@enqueue.client.default.config'
11-
- '@enqueue.client.default.route_collection'
12-
13-
enqueue.client.default.config:
14-
class: 'Enqueue\Client\Config'
15-
16-
enqueue.client.default.route_collection:
17-
class: 'Enqueue\Client\RouteCollection'
18-
factory: ['Enqueue\Client\RouteCollection', 'fromArray']
19-
arguments:
20-
- []
21-
22-
enqueue.client.default.producer:
23-
class: 'Enqueue\Client\Producer'
24-
public: true
25-
arguments:
26-
- '@enqueue.client.default.driver'
27-
- '@enqueue.client.default.rpc_factory'
28-
- '@enqueue.client.default.client_extensions'
29-
30-
enqueue.client.default.spool_producer:
31-
class: 'Enqueue\Client\SpoolProducer'
32-
public: true
33-
arguments:
34-
- '@enqueue.client.default.producer'
35-
36-
enqueue.client.default.client_extensions:
37-
class: 'Enqueue\Client\ChainExtension'
38-
arguments:
39-
- []
40-
41-
enqueue.client.default.rpc_factory:
42-
class: 'Enqueue\Rpc\RpcFactory'
43-
arguments:
44-
- '@enqueue.client.default.context'
45-
46-
enqueue.client.default.router_processor:
47-
class: 'Enqueue\Client\RouterProcessor'
48-
arguments:
49-
- '@enqueue.client.default.driver'
50-
51-
enqueue.client.default.processor_registry:
52-
class: 'Enqueue\Symfony\ContainerProcessorRegistry'
53-
54-
enqueue.client.default.delegate_processor:
55-
class: 'Enqueue\Client\DelegateProcessor'
56-
arguments:
57-
- '@enqueue.client.default.processor_registry'
58-
59-
enqueue.client.default.set_router_properties_extension:
60-
class: 'Enqueue\Client\ConsumptionExtension\SetRouterPropertiesExtension'
61-
arguments:
62-
- '@enqueue.client.default.driver'
63-
tags:
64-
- { name: 'enqueue.consumption_extension', priority: 100, client: 'default' }
65-
66-
enqueue.client.default.queue_consumer:
67-
class: 'Enqueue\Consumption\QueueConsumer'
68-
arguments:
69-
- '@enqueue.client.default.context'
70-
- '@enqueue.client.default.consumption_extensions'
71-
- []
72-
- null
73-
- ~
74-
- ~
75-
76-
enqueue.client.default.consumption_extensions:
77-
class: 'Enqueue\Consumption\ChainExtension'
78-
arguments:
79-
- []
80-
812
# todo
823
enqueue.profiler.message_queue_collector:
834
class: 'Enqueue\Bundle\Profiler\MessageQueueCollector'
@@ -86,17 +7,10 @@ services:
867
tags:
878
- { name: 'data_collector', template: '@Enqueue/Profiler/panel.html.twig', id: 'enqueue.message_queue' }
889

10+
# todo
8911
enqueue.client.default.flush_spool_producer_listener:
9012
class: 'Enqueue\Symfony\Client\FlushSpoolProducerListener'
9113
arguments:
9214
- '@enqueue.client.default.spool_producer'
9315
tags:
9416
- { name: 'kernel.event_subscriber' }
95-
96-
Enqueue\Client\ProducerInterface:
97-
public: true
98-
alias: 'enqueue.client.default.producer'
99-
100-
Enqueue\Client\SpoolProducer:
101-
public: true
102-
alias: 'enqueue.client.default.spool_producer'

Diff for: pkg/enqueue-bundle/Resources/config/extensions/delay_redelivered_message_extension.yml

-9
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
services:
22
enqueue.consumption.doctrine_clear_identity_map_extension:
33
class: 'Enqueue\Bundle\Consumption\Extension\DoctrineClearIdentityMapExtension'
4-
public: false
54
arguments:
65
- '@doctrine'
76
tags:
8-
- { name: 'enqueue.consumption_extension', client: 'default' }
7+
- { name: 'enqueue.consumption_extension', client: 'all' }
8+
- { name: 'enqueue.transport.consumption_extension', transport: 'all' }
9+
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
services:
22
enqueue.consumption.doctrine_ping_connection_extension:
33
class: 'Enqueue\Bundle\Consumption\Extension\DoctrinePingConnectionExtension'
4-
public: false
54
arguments:
65
- '@doctrine'
76
tags:
8-
- { name: 'enqueue.consumption.extension', client: 'default' }
7+
- { name: 'enqueue.consumption_extension', client: 'all' }
8+
- { name: 'enqueue.transport.consumption_extension', transport: 'all' }

Diff for: pkg/enqueue-bundle/Resources/config/extensions/exclusive_command_extension.yml

-8
This file was deleted.

Diff for: pkg/enqueue-bundle/Resources/config/extensions/flush_spool_producer_extension.yml

-8
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
services:
22
enqueue.consumption.reply_extension:
33
class: 'Enqueue\Consumption\Extension\ReplyExtension'
4-
public: false
54
tags:
6-
- { name: 'enqueue.consumption.extension', client: 'default' }
5+
- { name: 'enqueue.consumption_extension', client: 'all' }
6+
- { name: 'enqueue.transport.consumption_extension', transport: 'all' }
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
services:
22
enqueue.consumption.signal_extension:
33
class: 'Enqueue\Consumption\Extension\SignalExtension'
4-
public: false
54
tags:
6-
- { name: 'enqueue.consumption.extension', client: 'default' }
5+
- { name: 'enqueue.consumption_extension', client: 'all' }
6+
- { name: 'enqueue.transport.consumption_extension', transport: 'all' }

Diff for: pkg/enqueue-bundle/Tests/Functional/App/config/config.yml

+4
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ services:
5050
alias: 'enqueue.client.default.producer'
5151
public: true
5252

53+
test_enqueue.client.default.spool_producer:
54+
alias: 'enqueue.client.default.spool_producer'
55+
public: true
56+
5357
test_Enqueue\Client\ProducerInterface:
5458
alias: 'Enqueue\Client\ProducerInterface'
5559
public: true

Diff for: pkg/enqueue-bundle/Tests/Functional/App/config/custom-config.yml

+4
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ services:
1919
alias: 'enqueue.client.default.driver'
2020
public: true
2121

22+
test_enqueue.client.default.producer:
23+
alias: 'enqueue.client.default.producer'
24+
public: true
25+
2226
test_enqueue.transport.default.context:
2327
alias: 'enqueue.transport.default.context'
2428
public: true

Diff for: pkg/enqueue-bundle/Tests/Functional/Client/SpoolProducerTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class SpoolProducerTest extends WebTestCase
1212
{
1313
public function testCouldBeGetFromContainerAsService()
1414
{
15-
$producer = static::$container->get('enqueue.client.default.spool_producer');
15+
$producer = static::$container->get('test_enqueue.client.default.spool_producer');
1616

1717
$this->assertInstanceOf(SpoolProducer::class, $producer);
1818
}

Diff for: pkg/enqueue-bundle/Tests/Functional/UseCasesTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ protected static function createKernel(array $options = []): CustomAppKernel
363363

364364
private function getMessageProducer(): ProducerInterface
365365
{
366-
return static::$container->get('enqueue.client.default.producer');
366+
return static::$container->get('test_enqueue.client.default.producer');
367367
}
368368

369369
private function getContext(): Context

0 commit comments

Comments
 (0)