Redis Queue in Laravel: Umgang mit Warteschlangen

In ist ein leistungsstarkes Tool, mit dem sich langwierige und zeitaufwändige Aufgaben erledigen lassen, ohne auf deren Abschluss warten zu müssen Laravel. Redis Queue Durch die Verwendung Redis Queue können Sie Aufgaben wie das Versenden von E-Mails, die Verarbeitung von Hintergrundaufgaben oder das Erstellen von Berichten in die Warteschlange stellen und diese asynchron ausführen, wodurch die Anwendungsleistung und das Benutzererlebnis verbessert werden.

Grundlegende Schritte zur Verwendung Redis Queue in Laravel

Konfigurieren Redis

Zuerst müssen Sie Redis es installieren und konfigurieren Laravel. Stellen Sie sicher, dass Sie das Paket über Composer installiert Redis und die Redis Verbindungsparameter in der .env Datei konfiguriert haben.

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

Jobs definieren

Als nächstes müssen Sie die Jobs definieren, die Sie in die Warteschlange stellen möchten. Diese Jobs werden asynchron und unabhängig von der Hauptverarbeitung der Anwendung ausgeführt.

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

Stellen Sie Jobs in die Warteschlange

Wenn Sie einen Job ausführen möchten, stellen Sie ihn einfach mit den dispatch oder- dispatchNow Funktionen in die Warteschlange:

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

Verarbeiten Sie Jobs aus der Warteschlange

Nachdem der Job in die Warteschlange gestellt wurde, müssen Sie einen einrichten, Worker um die Jobs in der Warteschlange auszuführen. Laravel kommt mit einem artisan command zum Ausführen von worker:

php artisan queue:work

Die worker Jobs in der Warteschlange werden kontinuierlich überwacht und ausgeführt. Sie können den so konfigurieren worker, dass er die Anzahl der Jobs und die Wartezeit zwischen Verarbeitungsrunden verarbeitet.

Verwalten Sie Jobs in der Warteschlange

Laravel bietet eine Verwaltungsschnittstelle, über die Sie die Jobs in der Warteschlange überwachen und steuern können. Sie können die Anzahl der ausstehenden Jobs und die Verarbeitungszeit anzeigen und sogar fehlgeschlagene Jobs wiederholen.

 

Fazit Die Verwendung Redis Queue von in Laravel ist eine effiziente Möglichkeit, lang laufende Aufgaben zu bearbeiten, ohne die Hauptverarbeitung der Anwendung zu unterbrechen. Durch die Verwendung Redis Queue können Sie die Anwendungsleistung verbessern und das Benutzererlebnis verbessern.