Sommige taken zijn te zwaar om synchroon uit te voeren in een webrequest. E-mails versturen, rapporten genereren, afbeeldingen verwerken, externe API’s aanroepen — al deze taken vertraag je applicatie als je ze direct uitvoert. Laravel’s queue-systeem is de oplossing.

Wat is een queue?

Een queue (wachtrij) is een systeem waarbij je taken opslaat in een lijst die asynchroon — buiten het webrequest om — verwerkt worden door achtergrondprocessen genaamd workers. De gebruiker hoeft niet te wachten: hij krijgt onmiddellijk een reactie, en de taak wordt daarna afgehandeld.

Een Job aanmaken

php artisan make:job SendWelcomeEmail

In de handle()-methode definieer je wat er moet gebeuren. Een job is een simpele PHP-klasse met één verantwoordelijkheid.

Een Job dispatchen

SendWelcomeEmail::dispatch($user);
// Of met vertraging:
SendWelcomeEmail::dispatch($user)->delay(now()->addMinutes(5));

Queue drivers

Laravel ondersteunt meerdere queue backends:

  • Redis: snel, betrouwbaar, de aanbevolen keuze voor productie
  • Database: eenvoudig op te zetten, geen extra service nodig
  • SQS: Amazon’s queue service, goed voor cloud-omgevingen
  • Sync: verwerkt jobs onmiddellijk (handig voor lokale ontwikkeling)

Queue workers starten

php artisan queue:work --queue=default,emails

In productie gebruik je een process manager zoals Supervisor om workers automatisch te herstarten na crashes.

Failed jobs afhandelen

Mislukte jobs worden opgeslagen in de failed_jobs-tabel. Je kan ze bekijken, opnieuw proberen of verwijderen:

php artisan queue:failed
php artisan queue:retry {id}
php artisan queue:flush

Laravel Horizon

Voor grotere applicaties is Laravel Horizon een aanrader: een dashboard dat je queues en workers visualiseert, met statistieken over throughput, verwerkingstijd en mislukte jobs. Het draait bovenop Redis.

Praktische use cases

  • E-mails en notificaties versturen
  • PDF-rapporten genereren
  • Afbeeldingen verwerken en resizen
  • Externe API’s aanroepen (en opnieuw proberen bij fouten)
  • Data importeren en exporteren
  • Caches opwarmen na updates

Bij Meesy gebruiken we queues standaard in complexere Laravel applicaties. Het is een patroon dat de gebruikerservaring significant verbetert en de belasting op je webservers verlaagt. Voor maatwerk applicaties met zware achtergrondprocessen is dit onmisbaar. Neem contact op voor meer informatie.

Conclusie

Laravel Queues zijn een van de krachtigste features van het framework. Door zware taken asynchroon te verwerken, maak je je applicatie sneller, betrouwbaarder en beter schaalbaar. Eens je ermee gewerkt hebt, wil je niet meer zonder.

Heb je vragen over dit onderwerp of wil je samenwerken?

Neem contact op