/**
  * @param  WorkerEvent $e
  * @return void
  */
 public function onJobPop(WorkerEvent $e)
 {
     $queue = $e->getQueue();
     $options = $e->getOptions();
     $job = $queue->pop($options);
     /** @var AbstractWorker $worker */
     $worker = $e->getTarget();
     $eventManager = $worker->getEventManager();
     $e->setJob($job);
     // The queue may return null, for instance if a timeout was set
     if (!$job instanceof JobInterface) {
         $eventManager->trigger(WorkerEvent::EVENT_PROCESS_IDLE, $e);
         // make sure the event doesn't propagate or it will still process
         $e->stopPropagation();
         return;
     }
     $eventManager->trigger(WorkerEvent::EVENT_PROCESS_JOB, $e);
 }
 /**
  * Callback facilitating the worker loop
  *
  * @param WorkerEvent $e
  */
 public function callbackProcessQueueSetOptionsOnWorkerEvent(WorkerEvent $e)
 {
     $e->exitWorkerLoop();
     $this->eventOptions = $e->getOptions();
 }