Example #1
0
 public function dequeue($timeout = false)
 {
     if ($timeout !== false) {
         throw new InvalidArgumentException("Timeout not implemented");
     }
     while (true) {
         $queues = $this->_listening;
         foreach ($queues as $queue) {
             foreach ($queue->ReceiveMessage() as $message) {
                 $this->_messages[$queue->queueName][] = $message;
             }
             // return just the first available message
             foreach ($this->_messages as $queueName => $messages) {
                 foreach ($messages as $message) {
                     $task = Sera_Task_Builder::fromJson(urldecode($message->Body));
                     $task->messageId = $message->MessageId;
                     $task->receiptHandle = $message->ReceiptHandle;
                     $task->queueName = $queueName;
                     // change the SQS release delay
                     $queue->ChangeMessageVisibility($message->ReceiptHandle, $task->getTimeToRelease());
                     return $task;
                 }
             }
         }
         // shuffling queues ensures no queue receives better treatment
         shuffle($queues);
         sleep($this->_pollRate);
     }
 }
Example #2
0
 public function dequeue($timeout = null)
 {
     // TODO: implement the timeout
     if ($job = $this->_beanstalk->reserve($timeout)) {
         $task = Sera_Task_Builder::fromJson($job->getData());
         $task->beanstalkJob = $job;
         return $task;
     } else {
         return false;
     }
 }
Example #3
0
 /**
  * Copy tasks in this queue to another queue
  */
 public function copyTo($destQueue)
 {
     foreach ($this->_queues as $name => $queue) {
         $destQueue->select($name);
         foreach ($queue as $task) {
             $task = Sera_Task_Builder::fromJson($task);
             $destQueue->enqueue($task);
         }
     }
 }