/** * 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; } }
/** * 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; }
/** * On dispatch event listener - called on any event * * @param Event $event * @param string $eventName * @return void */ public function deadLetter(Amqp\AmqpEvent $event, \Exception $exception) { $queue = $this->getQueue($event->getExchangeName()); $exchange = $this->getExchange($event->getExchangeName()); $queue->bind($exchange->getName(), $event->getRoutingKey()); $exchange->publish($event->getBody(), $event->getRoutingKey(), AMQP_MANDATORY, $event->attributes()); }
private function display(AmqpEvent $event, $eventName, $methodName, $color = "1;32") { sprintf("[%sm %s@%s[0m[36m [%s][0m %s: %s \n", $color, $event->getExchangeName(), $event->getRoutingKey(), $eventName, $methodName, $event->getBody()); }