Claude-skill-registry laravel-queues
Implement background jobs with queues, workers, batches, chains, middleware, and failure handling. Use when processing async tasks or handling long-running operations.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/laravel-queues" ~/.claude/skills/majiayu000-claude-skill-registry-laravel-queues && rm -rf "$T"
manifest:
skills/data/laravel-queues/SKILL.mdsource content
Laravel Queues
Agent Workflow (MANDATORY)
Before ANY implementation, launch in parallel:
- fuse-ai-pilot:explore-codebase - Analyze existing job patterns
- fuse-ai-pilot:research-expert - Verify Queue docs via Context7
- mcp__context7__query-docs - Check job and worker patterns
After implementation, run fuse-ai-pilot:sniper for validation.
Overview
| Component | Purpose |
|---|---|
| Jobs | Background tasks with retries, timeouts |
| Workers | Process jobs from queues |
| Batches | Group jobs with progress tracking |
| Chains | Sequential job execution |
| Middleware | Rate limiting, deduplication |
| Horizon | Redis queue monitoring dashboard |
Decision Guide: Queue Driver
Which driver? ├── Development → sync (instant execution) ├── Small app → database (simple, no Redis) ├── Production → redis (fast, Horizon support) ├── AWS → sqs (managed, scalable) └── High volume → redis + Horizon (monitoring)
Decision Guide: Job Design
Job type? ├── Simple async → Standard Job ├── Group processing → Batch (progress, cancel) ├── Sequential steps → Chain (A → B → C) ├── Rate limited → Middleware + RateLimiter ├── Unique execution → UniqueJob / WithoutOverlapping └── Long running → Timeout + Retry settings
Critical Rules
- Use ShouldQueue for async processing
- Set tries and backoff for resilience
- Implement failed() method for error handling
- Use database transactions carefully with jobs
- Monitor with Horizon in production
Reference Guide
Concepts
| Topic | Reference | When to Consult |
|---|---|---|
| Jobs | jobs.md | Creating job classes |
| Dispatching | dispatching.md | Sending jobs to queues |
| Workers | workers.md | Running queue workers |
| Batching | batching.md | Grouping jobs |
| Chaining | chaining.md | Sequential jobs |
| Middleware | middleware.md | Rate limiting, dedup |
| Failed Jobs | failed-jobs.md | Error handling |
| Horizon | horizon.md | Monitoring dashboard |
| Testing | testing.md | Job testing |
| Troubleshooting | troubleshooting.md | Common issues |
Templates
| Template | When to Use |
|---|---|
| QueueableJob.php.md | Standard job with retries |
| BatchJob.php.md | Batchable job |
| ChainedJobs.php.md | Job chain implementation |
| JobMiddleware.php.md | Custom middleware |
| JobTest.php.md | Testing jobs |
Quick Reference
Basic Job
final class ProcessOrder implements ShouldQueue { use Queueable; public int $tries = 3; public int $backoff = 60; public int $timeout = 120; public function __construct( public readonly Order $order, ) {} public function handle(OrderService $service): void { $service->process($this->order); } public function failed(\Throwable $e): void { Log::error('Order failed', ['id' => $this->order->id]); } }
Dispatch
// Immediate ProcessOrder::dispatch($order); // Delayed ProcessOrder::dispatch($order)->delay(now()->addMinutes(5)); // On specific queue ProcessOrder::dispatch($order)->onQueue('orders');
Best Practices
DO
- Use
for job classesfinal - Implement
methodfailed() - Set appropriate
valuestimeout - Use
for one-at-a-time jobsUnique - Monitor with Horizon in production
DON'T
- Dispatch inside database transactions (use
)afterCommit - Store large objects in job properties
- Forget to handle failures
- Use sync driver in production