示例#1
0
 /**
  * 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;
 }
示例#2
0
 /**
  * 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];
 }