@@ -275,6 +275,74 @@ For deleting the consumer's queue, use this command:
275275$ ./app/console rabbitmq:delete --no-confirmation upload_picture
276276```
277277
278+ #### Consumer Events ####
279+
280+ This can be useful in many scenarios.
281+ There are 3 AMQPEvents:
282+ ##### ON CONSUME #####
283+ ```php
284+ class OnConsumeEvent extends AMQPEvent
285+ {
286+ const NAME = AMQPEvent::ON_CONSUME;
287+
288+ /**
289+ * OnConsumeEvent constructor.
290+ *
291+ * @param Consumer $consumer
292+ */
293+ public function __construct(Consumer $consumer)
294+ {
295+ $this->setConsumer($consumer);
296+ }
297+ }
298+ ```
299+
300+ Let`s say you need to sleep / stop consumer/s on a new application deploy.
301+ You can listen for OnConsumeEvent (\OldSound\RabbitMqBundle\Event\OnConsumeEvent) and check for new application deploy.
302+
303+ ##### BEFORE PROCESSING MESSAGE #####
304+
305+ ```php
306+ class BeforeProcessingMessageEvent extends AMQPEvent
307+ {
308+ const NAME = AMQPEvent::BEFORE_PROCESSING_MESSAGE;
309+
310+ /**
311+ * BeforeProcessingMessageEvent constructor.
312+ *
313+ * @param AMQPMessage $AMQPMessage
314+ */
315+ public function __construct(Consumer $consumer, AMQPMessage $AMQPMessage)
316+ {
317+ $this->setConsumer($consumer);
318+ $this->setAMQPMessage($AMQPMessage);
319+ }
320+ }
321+ ```
322+ Event raised before processing a AMQPMessage.
323+
324+ ##### AFTER PROCESSING MESSAGE #####
325+
326+ ```php
327+ class AfterProcessingMessageEvent extends AMQPEvent
328+ {
329+ const NAME = AMQPEvent::AFTER_PROCESSING_MESSAGE;
330+
331+ /**
332+ * AfterProcessingMessageEvent constructor.
333+ *
334+ * @param AMQPMessage $AMQPMessage
335+ */
336+ public function __construct(Consumer $consumer, AMQPMessage $AMQPMessage)
337+ {
338+ $this->setConsumer($consumer);
339+ $this->setAMQPMessage($AMQPMessage);
340+ }
341+ }
342+ ```
343+ Event raised after processing a AMQPMessage.
344+ If the process message will throw an Exception the event will not raise.
345+
278346#### Idle timeout ####
279347
280348If you need to set a timeout when there are no messages from your queue during a period of time, you can set the `idle_timeout` in seconds:
0 commit comments