Skip to content

Latest commit

 

History

History
55 lines (43 loc) · 1.26 KB

File metadata and controls

55 lines (43 loc) · 1.26 KB
name laravel-jobs
description Background jobs and event listeners for async processing. Use when working with queued jobs, background processing, events, or when user mentions jobs, queues, listeners, events, async processing.

Laravel Jobs

Background jobs and event listeners: thin delegation layers to actions.

Core Concept

jobs-listeners.md - Job patterns:

  • Jobs as thin delegation layers
  • Queue configuration
  • Retry logic and timeouts
  • Unique jobs
  • Job middleware
  • Event listeners
  • When to use jobs vs sync actions

Pattern

final class ProcessOrderJob implements ShouldQueue
{
    use Dispatchable, Queueable;

    public function __construct(
        public readonly int $orderId,
    ) {}

    public function handle(ProcessOrderAction $action): void
    {
        $order = Order::findOrFail($this->orderId);

        $action($order);
    }

    public function middleware(): array
    {
        return [new WithoutOverlapping($this->orderId)];
    }
}

// Listener
final class SendOrderConfirmationListener
{
    public function handle(OrderPlaced $event): void
    {
        SendOrderConfirmationJob::dispatch($event->order->id);
    }
}

Jobs delegate to actions. Keep domain logic in actions, not jobs.