/** * Delete a message from the queue * * Return true if the message is deleted, false if the deletion is * unsuccessful. * * @param QueueInterface $queue * @param MessageInterface $message * @return boolean * @throws Exception\QueueNotFoundException */ public function deleteMessage(QueueInterface $queue, MessageInterface $message) { if (!$this->queueExists($queue->getName())) { throw new Exception\QueueNotFoundException('Queue does not exist:' . $queue->getName()); } $info = $this->getMessageInfo($queue, $message); $messageId = $info['messageId']; // load the queue $queue =& $this->data[$queue->getName()]; if (!array_key_exists($messageId, $queue)) { return false; } if (!empty($info['options'][SendParametersInterface::REPEATING_INTERVAL])) { $microtime = (int) microtime(true); $queue[$messageId]['schedule'] = $microtime + $info['options'][SendParametersInterface::REPEATING_INTERVAL]; $queue[$messageId]['handle'] = null; $queue[$messageId]['timeout'] = null; } else { unset($queue[$messageId]); } return true; }
/** * Build info for received message * * @param mixed $handle * @param mixed $id * @param Queue $queue * @param ParametersInterface|array $options * @return array */ protected function buildMessageInfo($handle, $id, $queue, $options = null) { $name = $queue instanceof Queue ? $queue->getName() : (string) $queue; return ['handle' => $handle, 'messageId' => $id, 'queueId' => $this->getQueueId($name), 'queueName' => $name, 'adapter' => get_called_class(), 'options' => $options instanceof ParametersInterface ? $options->toArray() : (array) $options]; }