Laravel - Повторить неудачные задания в определенной очереди. - PullRequest
0 голосов
/ 18 октября 2018

Я знаю, что могу повторить задания, которые не были выполнены в моем приложении Laravel, используя: php artisan queue:retry 5 ИЛИ php artisan queue:retry all, чтобы отправить их обратно в очередь.

Хотя я бы хотел достичьтолько повторять неудачные задания из одной очереди.Например php artisan queue:retry all --queue=emails, который не работает.

Я мог бы, однако, пройти каждый вручную по идентификатору php artisan queue:retry 5, но это не поможет, если у меня 1000 записей.

Итак, в общем, мой вопрос, как я могу повторить все неудачные попытки?задания в определенной очереди?

1 Ответ

0 голосов
/ 18 октября 2018

Может быть, вы можете создать другую команду

скажем,

команда: 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');
       }
    }
}
...