我知道我可以通过使用php artisan queue:retry 5
或php artisan queue:retry all
将它们拉回到队列中来重试Laravel应用程序中失败的作业。
我想实现的是仅重试单个队列中失败的作业。如php artisan queue:retry all --queue=emails
无效。
但是我可以通过ID php artisan queue:retry 5
手动进行每个操作,但是如果我有1000条记录,这将无济于事。
总而言之,我的问题是,如何重试特定队列上的所有失败的作业?
答案 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');
}
}
}