3
3
namespace Enqueue \Consumption ;
4
4
5
5
use Enqueue \Consumption \Context \End ;
6
+ use Enqueue \Consumption \Context \InitLogger ;
6
7
use Enqueue \Consumption \Context \MessageReceived ;
7
8
use Enqueue \Consumption \Context \MessageResult ;
8
9
use Enqueue \Consumption \Context \PostConsume ;
@@ -32,7 +33,7 @@ final class QueueConsumer implements QueueConsumerInterface
32
33
private $ interopContext ;
33
34
34
35
/**
35
- * @var ExtensionInterface|ChainExtension
36
+ * @var ExtensionInterface
36
37
*/
37
38
private $ staticExtension ;
38
39
@@ -46,11 +47,6 @@ final class QueueConsumer implements QueueConsumerInterface
46
47
*/
47
48
private $ receiveTimeout ;
48
49
49
- /**
50
- * @var ExtensionInterface|ChainExtension
51
- */
52
- private $ extension ;
53
-
54
50
/**
55
51
* @var LoggerInterface
56
52
*/
@@ -128,11 +124,16 @@ public function bindCallback($queue, callable $processor): QueueConsumerInterfac
128
124
129
125
public function consume (ExtensionInterface $ runtimeExtension = null ): void
130
126
{
131
- $ this -> extension = $ runtimeExtension ?
127
+ $ extension = $ runtimeExtension ?
132
128
new ChainExtension ([$ this ->staticExtension , $ runtimeExtension ]) :
133
129
$ this ->staticExtension
134
130
;
135
131
132
+ $ initLogger = new InitLogger ($ this ->logger );
133
+ $ extension ->onInitLogger ($ initLogger );
134
+
135
+ $ this ->logger = $ initLogger ->getLogger ();
136
+
136
137
$ startTime = (int ) (microtime (true ) * 1000 );
137
138
138
139
$ start = new Start (
@@ -143,10 +144,10 @@ public function consume(ExtensionInterface $runtimeExtension = null): void
143
144
$ startTime
144
145
);
145
146
146
- $ this -> extension ->onStart ($ start );
147
+ $ extension ->onStart ($ start );
147
148
148
149
if ($ start ->isExecutionInterrupted ()) {
149
- $ this ->onEnd ($ startTime );
150
+ $ this ->onEnd ($ extension , $ startTime );
150
151
151
152
return ;
152
153
}
@@ -176,7 +177,7 @@ public function consume(ExtensionInterface $runtimeExtension = null): void
176
177
$ receivedMessagesCount = 0 ;
177
178
$ interruptExecution = false ;
178
179
179
- $ callback = function (InteropMessage $ message , Consumer $ consumer ) use (&$ receivedMessagesCount , &$ interruptExecution ) {
180
+ $ callback = function (InteropMessage $ message , Consumer $ consumer ) use (&$ receivedMessagesCount , &$ interruptExecution, $ extension ) {
180
181
++$ receivedMessagesCount ;
181
182
182
183
$ receivedAt = (int ) (microtime (true ) * 1000 );
@@ -188,19 +189,19 @@ public function consume(ExtensionInterface $runtimeExtension = null): void
188
189
$ processor = $ this ->boundProcessors [$ queue ->getQueueName ()]->getProcessor ();
189
190
190
191
$ messageReceived = new MessageReceived ($ this ->interopContext , $ consumer , $ message , $ processor , $ receivedAt , $ this ->logger );
191
- $ this -> extension ->onMessageReceived ($ messageReceived );
192
+ $ extension ->onMessageReceived ($ messageReceived );
192
193
$ result = $ messageReceived ->getResult ();
193
194
$ processor = $ messageReceived ->getProcessor ();
194
195
if (null === $ result ) {
195
196
try {
196
197
$ result = $ processor ->process ($ message , $ this ->interopContext );
197
198
} catch (\Exception $ e ) {
198
- $ result = $ this ->onProcessorException ($ message , $ e , $ receivedAt );
199
+ $ result = $ this ->onProcessorException ($ extension , $ message , $ e , $ receivedAt );
199
200
}
200
201
}
201
202
202
203
$ messageResult = new MessageResult ($ this ->interopContext , $ message , $ result , $ receivedAt , $ this ->logger );
203
- $ this -> extension ->onResult ($ messageResult );
204
+ $ extension ->onResult ($ messageResult );
204
205
$ result = $ messageResult ->getResult ();
205
206
206
207
switch ($ result ) {
@@ -220,7 +221,7 @@ public function consume(ExtensionInterface $runtimeExtension = null): void
220
221
}
221
222
222
223
$ postMessageReceived = new PostMessageReceived ($ this ->interopContext , $ message , $ result , $ receivedAt , $ this ->logger );
223
- $ this -> extension ->onPostMessageReceived ($ postMessageReceived );
224
+ $ extension ->onPostMessageReceived ($ postMessageReceived );
224
225
225
226
if ($ postMessageReceived ->isExecutionInterrupted ()) {
226
227
$ interruptExecution = true ;
@@ -241,7 +242,7 @@ public function consume(ExtensionInterface $runtimeExtension = null): void
241
242
$ this ->logger
242
243
);
243
244
244
- $ this -> extension ->onPreSubscribe ($ preSubscribe );
245
+ $ extension ->onPreSubscribe ($ preSubscribe );
245
246
246
247
$ subscriptionConsumer ->subscribe ($ consumer , $ callback );
247
248
}
@@ -252,21 +253,21 @@ public function consume(ExtensionInterface $runtimeExtension = null): void
252
253
$ interruptExecution = false ;
253
254
254
255
$ preConsume = new PreConsume ($ this ->interopContext , $ subscriptionConsumer , $ this ->logger , $ cycle , $ this ->receiveTimeout , $ startTime );
255
- $ this -> extension ->onPreConsume ($ preConsume );
256
+ $ extension ->onPreConsume ($ preConsume );
256
257
257
258
if ($ preConsume ->isExecutionInterrupted ()) {
258
- $ this ->onEnd ($ startTime , $ subscriptionConsumer );
259
+ $ this ->onEnd ($ extension , $ startTime , $ subscriptionConsumer );
259
260
260
261
return ;
261
262
}
262
263
263
264
$ subscriptionConsumer ->consume ($ this ->receiveTimeout );
264
265
265
266
$ postConsume = new PostConsume ($ this ->interopContext , $ subscriptionConsumer , $ receivedMessagesCount , $ cycle , $ startTime , $ this ->logger );
266
- $ this -> extension ->onPostConsume ($ postConsume );
267
+ $ extension ->onPostConsume ($ postConsume );
267
268
268
269
if ($ interruptExecution || $ postConsume ->isExecutionInterrupted ()) {
269
- $ this ->onEnd ($ startTime , $ subscriptionConsumer );
270
+ $ this ->onEnd ($ extension , $ startTime , $ subscriptionConsumer );
270
271
271
272
return ;
272
273
}
@@ -285,11 +286,11 @@ public function setFallbackSubscriptionConsumer(SubscriptionConsumer $fallbackSu
285
286
$ this ->fallbackSubscriptionConsumer = $ fallbackSubscriptionConsumer ;
286
287
}
287
288
288
- private function onEnd (int $ startTime , SubscriptionConsumer $ subscriptionConsumer = null ): void
289
+ private function onEnd (ExtensionInterface $ extension , int $ startTime , SubscriptionConsumer $ subscriptionConsumer = null ): void
289
290
{
290
291
$ endTime = (int ) (microtime (true ) * 1000 );
291
292
292
- $ this -> extension ->onEnd (new End ($ this ->interopContext , $ startTime , $ endTime , $ this ->logger ));
293
+ $ extension ->onEnd (new End ($ this ->interopContext , $ startTime , $ endTime , $ this ->logger ));
293
294
294
295
if ($ subscriptionConsumer ) {
295
296
$ subscriptionConsumer ->unsubscribeAll ();
@@ -301,12 +302,12 @@ private function onEnd(int $startTime, SubscriptionConsumer $subscriptionConsume
301
302
*
302
303
* https://github.com/symfony/symfony/blob/cbe289517470eeea27162fd2d523eb29c95f775f/src/Symfony/Component/HttpKernel/EventListener/ExceptionListener.php#L77
303
304
*/
304
- private function onProcessorException (Message $ message , \Exception $ exception , int $ receivedAt )
305
+ private function onProcessorException (ExtensionInterface $ extension , Message $ message , \Exception $ exception , int $ receivedAt )
305
306
{
306
307
$ processorException = new ProcessorException ($ this ->interopContext , $ message , $ exception , $ receivedAt , $ this ->logger );
307
308
308
309
try {
309
- $ this -> extension ->onProcessorException ($ processorException );
310
+ $ extension ->onProcessorException ($ processorException );
310
311
311
312
$ result = $ processorException ->getResult ();
312
313
if (null === $ result ) {
0 commit comments