6
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
7
use Symfony\Component\EventDispatcher\DependencyInjection\RegisterListenersPass;
8
8
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
9
+ use Symfony\Component\HttpKernel\Kernel;
9
10
10
11
class AsyncEventsPass implements CompilerPassInterface
11
12
{
@@ -21,6 +22,9 @@ public function process(ContainerBuilder $container): void
21
22
22
23
$defaultClient = $container->getParameter('enqueue.default_client');
23
24
25
+ // TODO: Remove when dropping Symfony < 5.3
26
+ $useLegacyDispatcherConfig = (Kernel::VERSION_ID < 50300);
27
+
24
28
$registeredToEvent = [];
25
29
foreach ($container->findTaggedServiceIds('kernel.event_listener') as $serviceId => $tagAttributes) {
26
30
foreach ($tagAttributes as $tagAttribute) {
@@ -32,8 +36,10 @@ public function process(ContainerBuilder $container): void
32
36
33
37
$service = $container->getDefinition($serviceId);
34
38
35
- $service->clearTag('kernel.event_listener');
36
- $service->addTag('enqueue.async_event_listener', $tagAttribute);
39
+ if ($useLegacyDispatcherConfig) {
40
+ $service->clearTag('kernel.event_listener');
41
+ $service->addTag('enqueue.async_event_listener', $tagAttribute);
42
+ }
37
43
38
44
if (false == isset($registeredToEvent[$event])) {
39
45
$container->getDefinition('enqueue.events.async_listener')
@@ -43,6 +49,16 @@ public function process(ContainerBuilder $container): void
43
49
])
44
50
;
45
51
52
+ if (!$useLegacyDispatcherConfig) {
53
+ $container->getDefinition('enqueue.events.async_listener')
54
+ ->addTag('kernel.event_listener', [
55
+ 'event' => $event,
56
+ 'method' => 'onEvent',
57
+ 'dispatcher' => 'enqueue.events.event_dispatcher',
58
+ ])
59
+ ;
60
+ }
61
+
46
62
$container->getDefinition('enqueue.events.async_processor')
47
63
->addTag('enqueue.processor', [
48
64
'topic' => 'event.'.$event,
@@ -62,8 +78,11 @@ public function process(ContainerBuilder $container): void
62
78
}
63
79
64
80
$service = $container->getDefinition($serviceId);
65
- $service->clearTag('kernel.event_subscriber');
66
- $service->addTag('enqueue.async_event_subscriber', $tagAttribute);
81
+
82
+ if ($useLegacyDispatcherConfig) {
83
+ $service->clearTag('kernel.event_subscriber');
84
+ $service->addTag('enqueue.async_event_subscriber', $tagAttribute);
85
+ }
67
86
68
87
/** @var EventSubscriberInterface $serviceClass */
69
88
$serviceClass = $service->getClass();
@@ -77,6 +96,16 @@ public function process(ContainerBuilder $container): void
77
96
])
78
97
;
79
98
99
+ if (!$useLegacyDispatcherConfig) {
100
+ $container->getDefinition('enqueue.events.async_listener')
101
+ ->addTag('kernel.event_listener', [
102
+ 'event' => $event,
103
+ 'method' => 'onEvent',
104
+ 'dispatcher' => 'enqueue.events.event_dispatcher',
105
+ ])
106
+ ;
107
+ }
108
+
80
109
$container->getDefinition('enqueue.events.async_processor')
81
110
->addTag('enqueue.processor', [
82
111
'topicName' => 'event.'.$event,
@@ -90,11 +119,13 @@ public function process(ContainerBuilder $container): void
90
119
}
91
120
}
92
121
93
- $registerListenersPass = new RegisterListenersPass(
94
- 'enqueue.events.event_dispatcher',
95
- 'enqueue.async_event_listener',
96
- 'enqueue.async_event_subscriber'
97
- );
98
- $registerListenersPass->process($container);
122
+ if ($useLegacyDispatcherConfig) {
123
+ $registerListenersPass = new RegisterListenersPass(
124
+ 'enqueue.events.event_dispatcher',
125
+ 'enqueue.async_event_listener',
126
+ 'enqueue.async_event_subscriber'
127
+ );
128
+ $registerListenersPass->process($container);
129
+ }
99
130
}
100
131
}
0 commit comments