@@ -168,39 +168,47 @@ public function consume(ExtensionInterface $runtimeExtension = null)
168
168
$ logger = $ context ->getLogger () ?: new NullLogger ();
169
169
$ logger ->info ('Start consuming ' );
170
170
171
- while (true ) {
172
- try {
173
- if ($ this ->psrContext instanceof AmqpContext) {
174
- $ callback = function (AmqpMessage $ message , AmqpConsumer $ consumer ) use ($ extension , $ logger , &$ context ) {
175
- $ currentProcessor = null ;
171
+ if ($ this ->psrContext instanceof AmqpContext) {
172
+ $ callback = function (AmqpMessage $ message , AmqpConsumer $ consumer ) use ($ extension , $ logger , &$ context ) {
173
+ $ currentProcessor = null ;
174
+
175
+ /** @var PsrQueue $queue */
176
+ foreach ($ this ->boundProcessors as list ($ queue , $ processor )) {
177
+ if ($ queue ->getQueueName () === $ consumer ->getQueue ()->getQueueName ()) {
178
+ $ currentProcessor = $ processor ;
179
+ }
180
+ }
176
181
177
- /** @var PsrQueue $queue */
178
- foreach ($ this ->boundProcessors as list ($ queue , $ processor )) {
179
- if ($ queue ->getQueueName () === $ consumer ->getQueue ()->getQueueName ()) {
180
- $ currentProcessor = $ processor ;
181
- }
182
- }
182
+ if (false == $ currentProcessor ) {
183
+ throw new \LogicException (sprintf ('The processor for the queue "%s" could not be found. ' , $ consumer ->getQueue ()->getQueueName ()));
184
+ }
183
185
184
- if (false == $ currentProcessor ) {
185
- throw new \LogicException (sprintf ('The processor for the queue "%s" could not be found. ' , $ consumer ->getQueue ()->getQueueName ()));
186
- }
186
+ $ context = new Context ($ this ->psrContext );
187
+ $ context ->setLogger ($ logger );
188
+ $ context ->setPsrQueue ($ consumer ->getQueue ());
189
+ $ context ->setPsrConsumer ($ consumer );
190
+ $ context ->setPsrProcessor ($ currentProcessor );
191
+ $ context ->setPsrMessage ($ message );
187
192
188
- $ context = new Context ($ this ->psrContext );
189
- $ context ->setLogger ($ logger );
190
- $ context ->setPsrQueue ($ consumer ->getQueue ());
191
- $ context ->setPsrConsumer ($ consumer );
192
- $ context ->setPsrProcessor ($ currentProcessor );
193
- $ context ->setPsrMessage ($ message );
193
+ $ this ->doConsume ($ extension , $ context );
194
194
195
- $ this ->doConsume ($ extension , $ context );
195
+ return true ;
196
+ };
196
197
197
- return true ;
198
- };
198
+ foreach ( $ consumers as $ consumer ) {
199
+ /* @var AmqpConsumer $consumer */
199
200
200
- foreach ($ consumers as $ consumer ) {
201
- /* @var AmqpConsumer $consumer */
201
+ $ this ->psrContext ->subscribe ($ consumer , $ callback );
202
+ }
203
+ }
202
204
203
- $ this ->psrContext ->subscribe ($ consumer , $ callback );
205
+ while (true ) {
206
+ try {
207
+ if ($ this ->psrContext instanceof AmqpContext) {
208
+ $ extension ->onBeforeReceive ($ context );
209
+
210
+ if ($ context ->isExecutionInterrupted ()) {
211
+ throw new ConsumptionInterruptedException ();
204
212
}
205
213
206
214
$ this ->psrContext ->consume ($ this ->receiveTimeout );
@@ -266,16 +274,14 @@ protected function doConsume(ExtensionInterface $extension, Context $context)
266
274
$ consumer = $ context ->getPsrConsumer ();
267
275
$ logger = $ context ->getLogger ();
268
276
269
- if (false == $ context ->getPsrMessage () instanceof AmqpContext) {
270
- $ extension ->onBeforeReceive ($ context );
271
- }
272
-
273
277
if ($ context ->isExecutionInterrupted ()) {
274
278
throw new ConsumptionInterruptedException ();
275
279
}
276
280
277
281
$ message = $ context ->getPsrMessage ();
278
282
if (false == $ message ) {
283
+ $ extension ->onBeforeReceive ($ context );
284
+
279
285
if ($ message = $ consumer ->receive ($ this ->receiveTimeout )) {
280
286
$ context ->setPsrMessage ($ message );
281
287
}
@@ -312,10 +318,6 @@ protected function doConsume(ExtensionInterface $extension, Context $context)
312
318
$ logger ->info (sprintf ('Message processed: %s ' , $ context ->getResult ()));
313
319
314
320
$ extension ->onPostReceived ($ context );
315
-
316
- if ($ context ->getPsrMessage () instanceof AmqpContext) {
317
- $ extension ->onBeforeReceive ($ context );
318
- }
319
321
} else {
320
322
usleep ($ this ->idleTimeout * 1000 );
321
323
$ extension ->onIdle ($ context );
0 commit comments