By default, if a job throws an exception, Laravel releases it back to the queue to retry later based on the retry settings. It does not delete the job immediately or stop the worker.
The correct syntax uses double dashes and an equal sign for options: --queue=emails. The queue:work command is preferred for workers.
php artisan queue:work and a job fails after all retry attempts. What message will the worker output in the console?Processing: App\Jobs\SendWelcomeEmail Failed: App\Jobs\SendWelcomeEmail
When a job fails after all retries, Laravel outputs 'Failed: JobClassName' to indicate the job was moved to the failed jobs table.
php artisan queue:work --tries=3 but jobs are never processed and no errors appear. What is the most likely cause?If the queue connection is set to 'sync', jobs run immediately during dispatch and the worker command does nothing.
Laravel marks a job as reserved using a lock in the queue backend (database, Redis, etc.) so other workers do not pick it up simultaneously.
