/** * 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; }
/** * @param Queue $queue * @param MessageInterface $message * @return void */ protected function cleanMessageInfo(Queue $queue, MessageInterface $message) { $metadatumKey = $queue->getOptions()->getMessageMetadatumKey(); if ($message->getMetadata($metadatumKey)) { $message->setMetadata($metadatumKey, null); } }