LaravelLaravel21 min read

Queue Retries and Failed Jobs: Making Background Work Reliable

Configure retries, timeouts, and failed job handling so queued tasks do not silently break.

Grace Collins
November 11, 2025
1.8k59

Queues are powerful, but only if failures are handled properly.

    Common failure reasons:
    - network errors (email provider, payment gateway)
    - timeouts
    - temporary DB outages
    
    ## Configure retries on a job
    
    ```php
    public $tries = 3;
    public $backoff = [10, 30, 60];
    public $timeout = 60;
    ```
    
    ## Failed jobs table
    
    ```bash
    php artisan queue:failed-table
    php artisan migrate
    ```
    
    ## Retry a failed job
    
    ```bash
    php artisan queue:retry all
    ```
    
    ## Flow
    
    ```mermaid
    flowchart LR
      A[Job Dispatched] --> B[Worker]
      B --> C{Success?}
      C -->|Yes| D[Done]
      C -->|No| E[Retry]
      E --> C
      C -->|Still fails| F[Failed Jobs Table]
    ```
    
    In the next tutorial, we will design caching invalidation strategies.
#Laravel#Queues#Reliability#Advanced