public function dequeue() { $rawMsg = $this->queue->reserveMessage($this->queueName, $this->timeout); if (!$rawMsg) { return false; } return array($rawMsg->body, $rawMsg->id, ['reservation_id' => $rawMsg->reservation_id]); }
/** * @inheritDoc */ public function dequeue($queueName) { $job = $this->iron->reserveMessage($queueName); if ($job) { $wrapped = $this->unserialize($job->body); $message = new DefaultEnvelope($wrapped->unwrap(), $job->reserved_count); $env = new IronEnvelope($job->id, $message, $job->reservation_id); return $env; } return null; }
public function testEmptyIron() { $iron_mq = new IronMQ(); $i = 0; $message = $iron_mq->reserveMessage('MyQueue'); while ($message !== null) { echo "{$i} th message: " . $message->body . "\n"; $iron_mq->deleteMessage('MyQueue', $message->id, $message->reservation_id); //'4a309ef65422643bd14383dee06bed29'); $i++; $message = $iron_mq->reserveMessage('MyQueue'); } }
$ironMQ->createQueue($queueName, array('message_expiration' => 3600)); // Post a message to a queue $singleMessageResponse = $ironMQ->postMessage($queueName, 'This is a sample message'); var_dump($singleMessageResponse); // Post multiple messages to a single queue $multiMessageResponse = $ironMQ->postMessages($queueName, array('Message 1', 'Message 2')); var_dump($multiMessageResponse); // Delete these messages one at a time $ironMQ->deleteMessage($queueName, $singleMessageResponse->id); foreach ($multiMessageResponse->ids as $messageID) { $ironMQ->deleteMessage($queueName, $messageID); } // Put a new message in the queue for us to work with $ironMQ->postMessage($queueName, 'This is a sample message'); // 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');