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

Laravel - Retry failed jobs on a specific queue

我知道我可以重试在我的 Laravel 应用程序中失败的作业,方法是使用:php artisan queue:retry 5php artisan queue:retry all 将它们推回队列。

我想实现的是只重试单个队列中失败的作业。例如 php artisan queue:retry all --queue=emails 是行不通的。

不过,我可以通过 ID php artisan queue:retry 5 手动查看每条记录,但如果我有 1000 条记录,这就无济于事了。

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

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

让我们说

命令: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');
       }
    }
}