/** * @inheritdoc * * @throws \InvalidArgumentException * @throws InvalidMessageException * @throws QueueAccessException */ public function deleteMessage($queueName, $message) { if (empty($queueName)) { throw new \InvalidArgumentException('Queue name empty or not defined.'); } if (empty($message)) { throw new InvalidMessageException($message, 'Message empty or not defined.'); } if (!is_array($message)) { throw new InvalidMessageException($message, 'Message must be an array.'); } if (!isset($message['ReceiptHandle'])) { throw new InvalidMessageException($message, 'ReceiptHandle not found in message.'); } if (!isset($message['priority'])) { throw new InvalidMessageException($message, 'Priority not found in message.'); } $priority = $this->priorityHandler->getPriorityByLevel($message['priority']); try { $queueUrl = $this->sqsClient->getQueueUrl(['QueueName' => $this->getQueueNameWithPrioritySuffix($queueName, $priority)])->get('QueueUrl'); $this->sqsClient->deleteMessage(['QueueUrl' => $queueUrl, 'ReceiptHandle' => $message['ReceiptHandle']]); } catch (SqsException $e) { throw new QueueAccessException('Cannot delete message from queue.', 0, $e); } return $this; }
/** * @inheritdoc * * @throws \InvalidArgumentException * @throws InvalidMessageException * @throws QueueAccessException */ public function deleteMessage($queueName, $message) { if (empty($queueName)) { throw new \InvalidArgumentException('Queue name empty or not defined.'); } if (empty($message)) { throw new InvalidMessageException($message, 'Message empty or not defined.'); } if (!is_array($message)) { throw new InvalidMessageException($message, 'Message must be an array.'); } if (!isset($message['id'])) { throw new InvalidMessageException($message, 'Message id not found in message.'); } if (!isset($message['priority'])) { throw new InvalidMessageException($message, 'Message priority not found in message.'); } $priority = $this->priorityHandler->getPriorityByLevel($message['priority']); if (!$this->fs->exists($this->getQueuePath($queueName, $priority))) { throw new QueueAccessException("Queue " . $queueName . " doesn't exist, please create it before use it."); } $this->deleteMessageLock($queueName, $message, $priority); return $this; }