Laravel Horizon ile is kuyrugu yonetimi
Laravel Horizon kurduk. Uzun suren islemler artik arka planda calisiyor. Kullanici beklemek zorunda degil.
E-posta gonderme, gorsel isleme, rapor olusturma, bildirim gonderme... Hepsi kuyruga ekleniyor ve siraya gore isleniyor.
Sonuc: Kullanici istegi aninda tamamlaniyor. Agir isler arka planda, kimse beklemez.
/horizon - Canli izleme paneli
Horizon > Pending Jobs
Horizon > Failed Jobs
Horizon > Metrics
Bir iş kuyruğa eklendiğinde arka planda şu adımlar gerçekleşir:
Kodda SendEmailJob::dispatch($user) çağrılır. Laravel bu job'ı serialize() ile JSON'a dönüştürüp Redis'e yazar.
Redis LPUSH queues:default komutu ile job'ı kuyruğun sonuna ekler. Her kuyruk (high, default, low) ayrı bir Redis listesi olarak tutulur.
Horizon Supervisor süreci sürekli çalışır. Worker'ların sayısını izler, gerekirse yeni worker başlatır veya durdurur.
Worker BRPOP queues:high queues:default queues:low ile kuyruktan job alır. Önce high, sonra default, en son low kuyruğuna bakar (öncelik sırası).
Worker job'ı unserialize() ile nesneye dönüştürür ve handle() metodunu çağırır. E-posta gönderilir, görsel işlenir vs.
Başarılı olursa job silinir ve metrikler güncellenir. Hata olursa failed_jobs tablosuna yazılır veya $tries sayısına göre tekrar kuyruğa eklenir.
Is kuyrugu. Islerin sirayla islenecegi liste.
Is. Kuyruga eklenen tek bir gorev.
Isci. Kuyruktan isleri alip calistiran proses.
Laravel'in kuyruk yonetim paneli. Izleme ve kontrol.