Laravel-重试特定队列上的失败作业

时间:2018-10-18 02:57:12

标签: laravel laravel-queue

我知道我可以通过使用php artisan queue:retry 5php artisan queue:retry all将它们拉回到队列中来重试Laravel应用程序中失败的作业。

我想实现的是仅重试单个队列中失败的作业。如php artisan queue:retry all --queue=emails无效。

但是我可以通过ID php artisan queue:retry 5手动进行每个操作,但是如果我有1000条记录,这将无济于事。

总而言之,我的问题是,如何重试特定队列上的所有失败的作业?

1 个答案:

答案 0 :(得分:2)

也许您可以创建另一个命令

命令:php artisan example:retry_queue emails

class RetryQueue extends Command
{
    protected $signature = 'example:retry_queue {queue_name?}';
    protected $description = 'Retry Queue';

    public function __construct()
    {
        parent::__construct();
    }

    public function handle()
    {
       // if the optional argument is set, then find all with match the queue name
       if ($this->argument('queue_name')) { 
            $queueList = FailedJobs::where('queue', $this->argument('queue_name'))->get();

            foreach($queueList as $list) {
                 Artisan::call('queue:retry '.$list->id);
            }
       } else {
            Artisan::call('queue:retry all');
       }
    }
}