/** * @param int $flags * * @return int */ public function delete($flags = Client::NOPARAM) { try { return $this->rawQueue->delete($flags); } catch (\Exception $e) { ClientHelper::throwRightException($e); } }
/** * Return result of task execution for $task_id * @param AMQPConnection $connection Connection object * @param string $task_id Celery task identifier * @param boolean $removeMessageFromQueue whether to remove message from queue * @return array array('body' => JSON-encoded message body, 'complete_result' => AMQPEnvelope object) * or false if result not ready yet */ function GetMessageBody($connection, $task_id, $removeMessageFromQueue = true) { $this->Connect($connection); $ch = $connection->channel; $q = new AMQPQueue($ch); $q->setName($task_id); $q->setFlags(AMQP_AUTODELETE | AMQP_DURABLE); $q->declareQueue(); try { $q->bind('celeryresults', $task_id); } catch (AMQPQueueException $e) { if ($removeMessageFromQueue) { $q->delete(); } $connection->disconnect(); return false; } $message = $q->get(AMQP_AUTOACK); if (!$message) { if ($removeMessageFromQueue) { $q->delete(); } $connection->disconnect(); return false; } if ($message->getContentType() != 'application/json') { if ($removeMessageFromQueue) { $q->delete(); } $connection->disconnect(); throw new CeleryException('Response was not encoded using JSON - found ' . $message->getContentType() . ' - check your CELERY_RESULT_SERIALIZER setting!'); } if ($removeMessageFromQueue) { $q->delete(); } $connection->disconnect(); return array('complete_result' => $message, 'body' => $message->getBody()); }
/** * Connect to queue, see if there's a result waiting for us * Private - to be used internally */ private function getCompleteResult() { if ($this->complete_result) { return $this->complete_result; } $this->connection->connect(); $ch = new AMQPChannel($this->connection); $q = new AMQPQueue($ch); $q->setName($this->task_id); $q->setFlags(AMQP_AUTODELETE); # $q->setArgument('x-expires', 86400000); $q->declareQueue(); try { $q->bind('celeryresults', $this->task_id); } catch (AMQPQueueException $e) { $q->delete(); $this->connection->disconnect(); return false; } $message = $q->get(AMQP_AUTOACK); if (!$message) { $q->delete(); $this->connection->disconnect(); return false; } $this->complete_result = $message; if ($message->getContentType() != 'application/json') { $q->delete(); $this->connection->disconnect(); throw new CeleryException('Response was not encoded using JSON - found ' . $message->getContentType() . ' - check your CELERY_RESULT_SERIALIZER setting!'); } $this->body = json_decode($message->getBody()); $q->delete(); $this->connection->disconnect(); return false; }
/** * @inheritdoc */ public function delete(int $flags = Constants::AMQP_NOPARAM) { $this->queue->delete($flags); }
} $timer = microtime(true) - $timer; echo ' Get: ', $iterations, ' iterations took ', $timer, 'sec', PHP_EOL; $q->delete(); $exchange->delete(); echo PHP_EOL; // ================================== $exchange = new AMQPExchange($ch); $exchange->setType(AMQP_EX_TYPE_FANOUT); $exchange->setFlags(AMQP_AUTODELETE); $exchange->setName('benchmark_exchange_' . microtime(true)); $exchange->declareExchange(); $q = new AMQPQueue($ch); $q->setFlags(AMQP_AUTODELETE); $q->declareQueue(); $q->bind($exchange->getName()); $timer = microtime(true); for ($i = 0; $i < $iterations; $i++) { $exchange->publish($message); } $timer = microtime(true) - $timer; echo 'Publish: ', $iterations, ' iterations took ', $timer, 'sec', PHP_EOL; $consumer_iterations = $iterations; $timer = microtime(true); $q->consume(function () use(&$consumer_iterations) { return --$consumer_iterations > 0; }, AMQP_AUTOACK); $timer = microtime(true) - $timer; echo 'Consume: ', $iterations, ' iterations took ', $timer, 'sec', PHP_EOL; $q->delete(); $exchange->delete();
/** * @inheritdoc */ public function delete($flags = null) { $this->delegate->delete(self::convertToDelegateFlags($flags)); }
/** * @param \AMQPQueue $queue */ protected function cleanupResponseQueue(\AMQPQueue $queue) { $queue->delete(); }
public function removeUserQueue($userid) { $q = new \AMQPQueue($this->cnn); $q->delete($userid); }