Ejemplo n.º 1
0
 /**
  * {@inheritDoc}
  */
 public function receive(array $options = [])
 {
     $options = $this->mergeOptions($options);
     if (!$this->queueExists()) {
         $this->create();
     }
     $messages = $this->ironmq->reserveMessages($this->getNameWithPrefix(), $options['messages_to_receive'], $options['message_timeout'], $options['receive_wait_time']);
     if (!is_array($messages)) {
         $this->log(200, "No messages found in queue.");
         return [];
     }
     // Convert to Message Class
     foreach ($messages as &$message) {
         $id = $message->id;
         $body = json_decode($message->body, true);
         $metadata = ['reserved_count' => $message->reserved_count, 'reservation_id' => $message->reservation_id];
         unset($body['_qpush_queue']);
         $message = new Message($id, json_encode($body), $metadata);
         $this->log(200, "Message has been received.", ['message_id' => $id]);
     }
     $this->reservedMessages = array_combine(array_values(array_map(function (Message $message) {
         return $message->getId();
     }, $messages)), $messages);
     return $messages;
 }
// Retrieve a message from a queue
$message = $ironMQ->reserveMessage($queueName);
var_dump($message);
// Touch a message to keep it around longer, in case you are nearing the timeout
echo 'Touching a message';
$reservationID = $ironMQ->touchMessage($queueName, $message->id, $message->reservation_id, IronMQ::GET_MESSAGE_TIMEOUT);
var_dump($reservationID);
// The reservation ID changes after touching, so make sure to update the message
$message->reservation_id = $reservationID->reservation_id;
// Delete a message when you are finished. Reserved messages MUST pass the reservation ID
$deleteResult = $ironMQ->deleteMessage($queueName, $message->id, $message->reservation_id);
var_dump($deleteResult);
// Put some new messages in the queue for us to work with
$ironMQ->postMessage($queueName, 'This is a sample message');
$ironMQ->postMessage($queueName, 'This is a sample message2');
$ironMQ->postMessage($queueName, 'This is a sample message3');
$ironMQ->postMessage($queueName, 'This is a sample message4');
$messages = $ironMQ->reserveMessages($queueName, 4);
var_dump($messages);
// Delete all of the messages. You can also delete messages individually if you'd like
$ironMQ->deleteMessages($queueName, $messages);
// Put some new messages in the queue for us to work with
$ironMQ->postMessage($queueName, 'This is a sample message');
$ironMQ->postMessage($queueName, 'This is a sample message2');
// See what messages are there without reserving them
$peekResult = $ironMQ->peekMessage($queueName);
var_dump($peekResult);
$peekResult = $ironMQ->peekMessages($queueName, 2);
var_dump($peekResult);
// Delete the sample queue we created
$ironMQ->deleteQueue($queueName);