/**
* Run the job.
*
* @param Job $job
*/
public function run(Job $job)
{
\Yii::info('Running job', 'yii2queue');
try {
if ($job->isCallable()) {
$retval = $job->runCallable();
} else {
$retval = $this->module->runAction($job->route, $job->data);
}
} catch (\Exception $e) {
if ($job->isCallable()) {
if (isset($job->header['signature']) && isset($job->header['signature']['route'])) {
$id = $job->id . " " . \yii\helpers\Json::encode($job->header['signature']['route']);
} else {
$id = $job->id . ' callable';
}
} else {
$id = $job->route;
}
\Yii::error("Fatal Error: Error running route '{$id}'. Message: {$e->getMessage()}", 'yii2queue');
throw new \yii\base\Exception("Error running route '{$id}'. Message: {$e->getMessage()}. File: {$e->getFile()}[{$e->getLine()}]. Stack Trace: {$e->getTraceAsString()}", 500);
}
if ($retval !== false) {
\Yii::info('Deleting job', 'yii2queue');
$this->delete($job);
}
}