getJobIds() as $id) { $job = $this->laravel['queue.failer']->find($id); if (is_null($job)) { $this->error("Unable to find failed job with ID [{$id}]."); } else { $this->retryJob($job); $this->info("The failed job [{$id}] has been pushed back onto the queue!"); $this->laravel['queue.failer']->forget($id); } } } /** * Get the job IDs to be retried. * * @return array */ protected function getJobIds() { $ids = (array) $this->argument('id'); if (count($ids) === 1 && $ids[0] === 'all') { $ids = Arr::pluck($this->laravel['queue.failer']->all(), 'id'); } return $ids; } /** * Retry the queue job. * * @param \stdClass $job * @return void */ protected function retryJob($job) { $this->laravel['queue']->connection($job->connection)->pushRaw( $this->resetAttempts($job->payload), $job->queue ); } /** * Reset the payload attempts. * * Applicable to Redis jobs which store attempts in their payload. * * @param string $payload * @return string */ protected function resetAttempts($payload) { $payload = json_decode($payload, true); if (isset($payload['attempts'])) { $payload['attempts'] = 0; } return json_encode($payload); } }