Example #1
0
 /**
  * On dispatch event listener - called on any event
  *
  * @param AmqpEvent $event
  * @return void
  */
 public function postpone(Amqp\AmqpEvent $event)
 {
     // Checks if message was expired or retried too many times
     if ($event->getHeader("x-retry-count", 0) < $this->getRetryCount()) {
         $event->addHeader("x-retry-count", $event->getHeader("x-retry-count", 0) + 1);
         $event->removeHeader("x-death");
         $exchange = $this->getExchange($event->getExchangeName(), $event->getRoutingKey());
         $exchange->publish($event->getBody(), $event->getRoutingKey(), AMQP_NOPARAM, $event->attributes());
         return true;
     }
     return false;
 }
Example #2
0
 /**
  * Creates wait queue
  *
  * @return AMQPQueue
  */
 private function getQueueEvent(Amqp\AmqpEvent $event)
 {
     $properties = $event->getHeader("x-command-queue-get");
     if ($properties && ($flags = $properties["flags"]) && ($name = $properties["name"])) {
         $queue = $this->broker->queue($flags, $name);
         $envelope = $queue->get();
         return $envelope ? new Amqp\ConsumeEvent($envelope, $queue) : null;
     }
 }