📊 Modifier l'ordre dans lequel Laravel récupère les tâches en file d'attente (AKA Priority Queues)

DEV - 20/05
Avez-vous déjà souhaité que certaines tâches en file d'attente soient traitées bien avant d'autres ? Par exemple, si vous voulez...

Avez-vous déjà souhaité que certaines tâches en file d'attente soient traitées bien avant d'autres ? Par exemple, si vous souhaitez que les transactions de votre client VIP soient terminées avant celles des autres, cet article pourrait vous aider.

Approche simple ✨

Si vous n'avez que quelques niveaux de clients, vous pouvez envisager de les affecter à une file d'attente différente afin que les clients VIP ne soient pas bloqués par d'autres clients :

?php namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; class ProcessJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public function __construct(private Customer $customer) { $this-onQueue($this->determineQueue()); } /** * Déterminez la file d'attente à utiliser en fonction du type de client. */ fonction privée déterminerQueue() : string { return $customer->is_vip ? 'vip' : 'par défaut'; } public function handle(): void { // Logique du travail } }
Entrer en mode plein écran Quitter le mode plein écran

⚙️ Ensuite, exécutez des Workers distincts pour les deux files d'attente :

file d'attente artisan php:work --queue=par défaut file d'attente artisan php:work --queue=vip
Entrer en mode plein écran Quitter le mode plein ...
[Courte citation de 8% de l'article original]
Loading...