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