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