Queues and Horizon
Run workers safely, verify execution, and test job behavior.
Commands
Start worker
sail artisan queue:work --queue=high,default --tries=3 --backoff=5 # or: php artisan queue:work --queue=high,default --tries=3 --backoff=5
Horizon (if installed)
sail artisan horizon # or: php artisan horizon
Failed jobs
sail artisan queue:failed # or: php artisan queue:failed sail artisan queue:retry all # or: php artisan queue:retry all
Patterns
-
Use named queues for prioritization; keep defaults sane
-
Add actionable Log::warning /::error with context in jobs
-
Idempotency: make jobs safe to retry
-
Emit metrics where possible; observe in Horizon or your APM
Testing Jobs
-
Use Bus::fake() to assert dispatching in unit tests
-
Use integration tests to verify side-effects (DB/IO)