Redis Queue in Laravel: Gestione accodamento

In Laravel, Redis Queue è un potente strumento utilizzato per gestire attività di lunga durata e che richiedono tempo senza attendere il loro completamento. Utilizzando Redis Queue, è possibile accodare attività come l'invio di e-mail, l'elaborazione di attività in background o la generazione di report ed eseguirle in modo asincrono, migliorando le prestazioni dell'applicazione e migliorando l'esperienza dell'utente.

Passaggi di base da utilizzare Redis Queue in Laravel

Configura Redis

Innanzitutto, è necessario installare e configurare Redis in Laravel. Assicurati di aver installato il Redis pacchetto tramite Composer e configurato i Redis parametri di connessione nel .env file.

CACHE_DRIVER=redis  
REDIS_HOST=127.0.0.1  
REDIS_PASSWORD=null  
REDIS_PORT=6379  

Definire i lavori

Successivamente, è necessario definire i lavori che si desidera mettere in coda. Questi lavori verranno eseguiti in modo asincrono e indipendente dall'elaborazione principale dell'applicazione.

// Example defining a job to send an email  
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;  
use Illuminate\Support\Facades\Mail;  
  
class SendEmailJob implements ShouldQueue  
{  
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;  
  
    protected $user;  
  
    public function __construct($user)  
    {  
        $this->user = $user;  
    }  
  
    public function handle()  
    {  
        // Handle sending an email to the user  
        Mail::to($this->user->email)->send(new WelcomeEmail());  
    }  
}  

Metti i lavori in coda

Quando vuoi eseguire un lavoro, lo metti semplicemente in coda usando le funzioni dispatch o dispatchNow:

use App\Jobs\SendEmailJob;  
use Illuminate\Support\Facades\Queue;  
  
// Put the job into the queue and perform asynchronously  
Queue::push(new SendEmailJob($user));  
  
// Put the job into the queue and perform synchronously(without waiting)  
Queue::push(new SendEmailJob($user))->dispatchNow();  

Processi di processo dalla coda

Dopo che il lavoro è stato messo in coda, è necessario impostare a Worker per eseguire i lavori in coda. Laravel viene fornito con un artisan command per eseguire worker:

php artisan queue:work

Ascolterà worker ed eseguirà continuamente i lavori in coda. È possibile configurare worker per gestire il numero di processi e il tempo di attesa tra i cicli di elaborazione.

Gestisci i lavori in coda

Laravel fornisce un'interfaccia di gestione in cui è possibile monitorare e controllare i lavori in coda. È possibile visualizzare il numero di lavori in sospeso, il tempo di elaborazione e persino riprovare i lavori non riusciti.

 

Conclusione L'uso Redis Queue di in Laravel è un modo efficiente per gestire attività di lunga durata senza interrompere l'elaborazione principale dell'applicazione. Utilizzando Redis Queue, è possibile migliorare le prestazioni dell'applicazione e migliorare l'esperienza dell'utente.