Yazan

Metgesoft

Yayın Tarihi

2024-02-05 11:46:14

Laravel Queue (Kuyruk) Nedir?

Laravel freamwork'unun bize sağlamış olduğu queue yapısı uzun soluklu işlemlerde tüm işlemi sunucuya aktarmayıp sunucunun sağlığını ve projenin devamlılığını korumak için işlemleri sıraya alma mekanizmasıdır. Temel olarak database ve redis üzerinden çalıştırılabilmekte olup kuyruğa alınan işlemleri görüntüleme imkanı sunar. Bu makalemizde queue sisteminin nasıl çalıştığına değineceğiz.

1.Queue Driver Yapılandırması:
Queue driver yapılandırması için laraveldeki .env dosyanızdaki QUEUE_CONNECTION parametresini kullanacağınız drivera göre güncelleyebilirsiniz. Örnek olarak redis sürücüsüne güncelleme komutu:
QUEUE_CONNECTION=redis

2.Bir Job(İş sınıfı) Oluşturun:
Kullanacağınız işlem ile alakalı bir Job oluşturun ve oluşturduğunuz Job sınıfında Illuminate\Contracts\Queue\ShouldQueue bu kütüphanenin eklenmiş olduğuna dikkat edin
php artisan make:job SendEmailJob

Örnek Job(İş) içeriği

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()
    {
        Mail::to($this->user->email)->send(new \App\Mail\WelcomeEmail($this->user));
    }
}


3. Dispatch Yöntemi ile Yapacağınız İşlemi Job(iş) Sınıfıdan Gönderin:

Job sınıfını oluşturduktan sonra yapacağınız işlemi dispatch yöntemi ile iş sınıfınıza gönderin

$user = User::find(1);
dispatch(new SendEmailJob($user));


4.İşlem Kuyruğunu Dinleme:

Kuyruğa alınmış işleri işlemek için bir kuyruk çalışanı başlatmanız gerekecektir. Laravel, kuyruğu sürekli olarak yoklayan ve kullanılabilir hale geldikçe işleri işleyen bir çalışanı çalıştıran php artisan queue:work komutu da dahil olmak üzere birçok kuyruk çalışanı sağlar.

php artisan queue:work

Queue işlemini başlattıktan sonra işlemlerinizi kontrol edebilirsiniz. Arka planda yaptığınız işlemler sırasıyla sunucunuzu yormadan çalışmaya devam edecektir. 
Laravel Queue sayesinde işlemlerinizi sıraya sokup sunucuyu yormadan gerçekleştirebilirsiniz.