Example #1
0
 /**
  * @param QueuePayload $payload
  * @throws \Exception
  * @throws \yii\base\InvalidConfigException
  */
 protected function resolveAndRun(QueuePayload $payload)
 {
     list($class, $method) = $this->resolveJob($payload->getClass());
     $instance = Yii::createObject(['class' => $class]);
     if ($instance instanceof BaseTask) {
         $instance->beforeRun($this, $payload);
     }
     try {
         if ($instance instanceof QueueWorker) {
             $instance->run($this, $payload->getParams());
         } else {
             call_user_func([$instance, $method], $this, $payload->getParams());
         }
     } catch (\Exception $ex) {
         if ($instance instanceof BaseTask) {
             $instance->onFail($this, $payload, $ex);
         }
         throw $ex;
     }
     if ($instance instanceof BaseTask) {
         $instance->afterRun($this, $payload);
     }
 }
Example #2
0
 /**
  * @param QueuePayload $payload
  */
 public function pushJob(QueuePayload $payload)
 {
     $this->push($payload->getClass(), $payload->getParams(), $payload->getQueueName() ?? 'default');
 }