Laravel - 在特定队列上重试失败的作业
Laravel - Retry failed jobs on a specific queue
我知道我可以重试在我的 Laravel 应用程序中失败的作业,方法是使用:php artisan queue:retry 5
或 php 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');
}
}
}
我知道我可以重试在我的 Laravel 应用程序中失败的作业,方法是使用:php artisan queue:retry 5
或 php 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');
}
}
}