diff --git a/sites/all/modules/contrib/drupal_queue/drupal_queue.drush.inc b/sites/all/modules/contrib/drupal_queue/drupal_queue.drush.inc
index 09c6064..dd4afed 100644
--- a/sites/all/modules/contrib/drupal_queue/drupal_queue.drush.inc
+++ b/sites/all/modules/contrib/drupal_queue/drupal_queue.drush.inc
@@ -21,8 +21,46 @@ function drupal_queue_drush_help($section) {
  */
 function drupal_queue_drush_command() {
   $items['queue-cron'] = array(
-    'callback' => 'drupal_queue_cron_run',
+    'callback' => 'drupal_queue_drush_queue_cron',
+    'options' => array(
+      'repeat' => 'Repeat queue-cron processing n times, -1 - Until there is nothing in the queue, 0 - Forever, n - n times. Default is 1', 
+    ),
     'description' => 'Run Drupal queue workers.',
   );
   return $items;
 }
+
+function drupal_queue_drush_queue_cron() {
+  $repeat = drush_get_option('repeat', 1);
+  $repeat = is_numeric($repeat) ? $repeat : 1;
+  
+  switch ($repeat) {
+    case -1:
+      print "Processing Queue until empty\n";
+      while ($count = drupal_queue_cron_run()) {
+        print format_plural($count, "Processed 1 job\n", "Processed @count jobs\n");
+      }
+      break;
+
+    case 0:
+      print "Processing Queue Forever\n";
+      while (1) {
+        $count = drupal_queue_cron_run();
+        if ($count) {
+          print format_plural($count, "Processed 1 job\n", "Processed @count jobs\n");
+        }
+        else {
+          print "No jobs processed, sleeping for 5 seconds\n";
+          sleep(5);
+        }
+      }
+      break;
+
+    default:
+      print 'Processing Queue ' . format_plural($repeat, "1 time", "@count times") . "\n";
+      for ($i = 0; $i < $repeat; $i++) {
+        $count = drupal_queue_cron_run();
+        print "{$i}. " . format_plural($count, "Processed 1 job\n", "Processed @count jobs\n");
+      }
+  }
+}
\ No newline at end of file
diff --git a/sites/all/modules/contrib/drupal_queue/drupal_queue.module b/sites/all/modules/contrib/drupal_queue/drupal_queue.module
index 4e08bf4..1218c7c 100644
--- a/sites/all/modules/contrib/drupal_queue/drupal_queue.module
+++ b/sites/all/modules/contrib/drupal_queue/drupal_queue.module
@@ -36,6 +36,8 @@ function drupal_queue_include() {
  * the queue.
  */
 function drupal_queue_cron_run() {
+  $jobs_processed = 0;
+  
   drupal_queue_include();
 
   // Try to increase the maximum execution time if it is too low.
@@ -53,10 +55,13 @@ function drupal_queue_cron_run() {
     $end = time() + (isset($info['time']) ? $info['time'] : 15);
     $queue = DrupalQueue::get($queue_name);
     while (time() < $end && ($item = $queue->claimItem())) {
+      $jobs_processed++;
       $function($item->data);
       $queue->deleteItem($item);
     }
   }
+  
+  return $jobs_processed;
 }
 
 /**
