Redis Queue em Laravel: Tratamento de Filas

No Laravel, Redis Queue é uma ferramenta poderosa usada para lidar com tarefas demoradas e demoradas sem esperar sua conclusão. Ao usar o Redis Queue, você pode enfileirar tarefas como enviar e-mails, processar tarefas em segundo plano ou gerar relatórios e executá-los de forma assíncrona, melhorando o desempenho do aplicativo e aprimorando a experiência do usuário.

Etapas básicas para usar Redis Queue em Laravel

configurar Redis

Em primeiro lugar, você precisa instalar e configurar Redis em Laravel. Certifique-se de ter instalado o Redis pacote via Composer e configurado os Redis parâmetros de conexão no .env arquivo.

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

Definir trabalhos

Em seguida, você precisa definir os trabalhos que deseja colocar na fila. Esses trabalhos serão executados de forma assíncrona e independente do processamento principal do aplicativo.

// 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());  
    }  
}  

Colocar trabalhos na fila

Quando você deseja executar um trabalho, basta colocá-lo na fila usando as funções dispatch ou 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();  

Processar trabalhos da fila

Depois que o trabalho for colocado na fila, você precisará configurar um Worker para executar os trabalhos na fila. Laravel vem com um artisan command para executar o worker:

php artisan queue:work

O worker irá ouvir e executar continuamente os trabalhos na fila. Você pode configurar o worker para lidar com o número de trabalhos e o tempo de espera entre as rodadas de processamento.

Gerenciar trabalhos na fila

Laravel fornece uma interface de gerenciamento onde você pode monitorar e controlar os trabalhos na fila. Você pode visualizar o número de trabalhos pendentes, o tempo de processamento e até mesmo tentar novamente trabalhos com falha.

 

Conclusão O uso Redis Queue de in Laravel é uma maneira eficiente de lidar com tarefas de execução longa sem interromper o processamento principal do aplicativo. Ao usar Redis Queue, você pode melhorar o desempenho do aplicativo e aprimorar a experiência do usuário.