Redis Queue u Laravel: Rukovanje čekanjem

U Laravel, Redis Queue je moćan alat koji se koristi za rješavanje dugotrajnih i dugotrajnih zadataka bez čekanja na njihov završetak. Korištenjem Redis Queue možete staviti zadatke kao što su slanje e-pošte, obrada pozadinskih zadataka ili generiranje izvješća u red čekanja i izvršiti ih asinkrono, poboljšavajući performanse aplikacije i poboljšavajući korisničko iskustvo.

Osnovni koraci za korištenje Redis Queue u Laravel

Konfigurirati Redis

Prvo morate instalirati i konfigurirati Redis u Laravel. Provjerite jeste li instalirali Redis paket putem Composer-a i konfigurirali Redis parametre veze u .env datoteci.

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

Definirajte poslove

Zatim trebate definirati poslove koje želite staviti u red čekanja. Ti će se poslovi obavljati asinkrono i neovisno o glavnoj obradi aplikacije.

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

Stavite poslove u red čekanja

Kada želite izvršiti posao, jednostavno ga stavite u red čekanja koristeći dispatch ili dispatchNow funkcije:

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

Obrada poslova iz reda čekanja

Nakon što je posao stavljen u red čekanja, trebate postaviti Worker za izvršavanje poslova u redu čekanja. Laravel dolazi sa artisan command za pokretanje worker:

php artisan queue:work

Kontinuirano će worker slušati i izvršavati poslove u redu čekanja. Možete konfigurirati da worker upravlja brojem poslova i vremenom čekanja između rundi obrade.

Upravljanje poslovima u redu čekanja

Laravel pruža sučelje za upravljanje gdje možete nadzirati i kontrolirati poslove u redu čekanja. Možete vidjeti broj poslova na čekanju, vrijeme obrade, pa čak i ponovno pokušati s neuspjelim poslovima.

 

Zaključak Korištenje Redis Queue ina Laravel učinkovit je način za rješavanje dugotrajnih zadataka bez ometanja glavne obrade aplikacije. Korištenjem Redis Queue možete poboljšati rad aplikacije i poboljšati korisničko iskustvo.