/** * 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; }
/** * 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; } }