66use Symfony \Component \DependencyInjection \ContainerBuilder ;
77use Symfony \Component \EventDispatcher \DependencyInjection \RegisterListenersPass ;
88use Symfony \Component \EventDispatcher \EventSubscriberInterface ;
9+ use Symfony \Component \HttpKernel \Kernel ;
910
1011class AsyncEventsPass implements CompilerPassInterface
1112{
@@ -21,6 +22,9 @@ public function process(ContainerBuilder $container): void
2122
2223 $ defaultClient = $ container ->getParameter ('enqueue.default_client ' );
2324
25+ // TODO: Remove when dropping Symfony < 5.3
26+ $ useLegacyDispatcherConfig = (Kernel::VERSION_ID < 50300 );
27+
2428 $ registeredToEvent = [];
2529 foreach ($ container ->findTaggedServiceIds ('kernel.event_listener ' ) as $ serviceId => $ tagAttributes ) {
2630 foreach ($ tagAttributes as $ tagAttribute ) {
@@ -32,8 +36,10 @@ public function process(ContainerBuilder $container): void
3236
3337 $ service = $ container ->getDefinition ($ serviceId );
3438
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+ }
3743
3844 if (false == isset ($ registeredToEvent [$ event ])) {
3945 $ container ->getDefinition ('enqueue.events.async_listener ' )
@@ -43,6 +49,16 @@ public function process(ContainerBuilder $container): void
4349 ])
4450 ;
4551
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+
4662 $ container ->getDefinition ('enqueue.events.async_processor ' )
4763 ->addTag ('enqueue.processor ' , [
4864 'topic ' => 'event. ' .$ event ,
@@ -62,8 +78,11 @@ public function process(ContainerBuilder $container): void
6278 }
6379
6480 $ 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+ }
6786
6887 /** @var EventSubscriberInterface $serviceClass */
6988 $ serviceClass = $ service ->getClass ();
@@ -77,6 +96,16 @@ public function process(ContainerBuilder $container): void
7796 ])
7897 ;
7998
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+
80109 $ container ->getDefinition ('enqueue.events.async_processor ' )
81110 ->addTag ('enqueue.processor ' , [
82111 'topicName ' => 'event. ' .$ event ,
@@ -90,11 +119,13 @@ public function process(ContainerBuilder $container): void
90119 }
91120 }
92121
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+ }
99130 }
100131}
0 commit comments