我有一个带有队列的Laravel项目,每天运行约1000个工作。
当作业失败时,在5.7中,它被移到了fail_jobs表中,我能够重试它。
迁移到Laravel 5.8之后,工作就消失了。
此代码应将作业标记为失败,并将其放置在failed-jobs表中。
/**
* Execute the job.
*/
public function handle()
{
throw new \Exception('WRONG JOB');
}
在这种情况下的主管日志:
[2019-04-10 15:07:57][11932] Processing: App\Jobs\ExecuteAction
似乎执行停止了,并且没有调用Queue :: failing事件。
此代码有效,但对我而言似乎不合适。
class ExecuteAction implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Execute the job.
*/
public function handle()
{
try {
throw new \Exception('WROOONG');
} catch (\Exception $e) {
if ($this->attempts() < $this->tries) {
$this->release(10);
} else {
$this->fail($e);
}
}
}
}
队列::失败事件被调用。
主管日志;
[2019-04-10 15:06:52][11926] Processing: App\Jobs\ExecuteAction
[2019-04-10 15:06:52][11926] Failed: App\Jobs\ExecuteAction
[2019-04-10 15:06:52][11926] Processed: App\Jobs\ExecuteAction
在主管会议中
command=php /path/to/laravel-project/artisan queue:listen
我做错了什么?
谢谢您的帮助。
答案 0 :(得分:1)
发件人: https://laravel.com/docs/5.8/queues
命令:queue:listen
已从文档中删除,现在建议使用队列的运行方式为运行:queue:work
。
请参阅: https://laravel.com/docs/5.8/queues#running-the-queue-worker
或者您可以使用: Laravel Horizon