Evet, Laravel başarısız işler için otomatik yeniden denemeler sağlar. Detaylar burada:
Otomatik Yeniden Denemeler
1. Yapılandırılabilir Yeniden Denemeler: İşleri geçici hatalar nedeniyle başarısız olmaları durumunda yeniden denenecek şekilde yapılandırarak sistem güvenilirliğini artırabilirsiniz. Bu, iş sınıfında[3] "trys" özelliğinin ayarlanmasıyla yapılır.
2. Otomatik Yeniden Denemeler: Laravel başarısız işler için otomatik yeniden denemeler sağlar. Bir iş başarısız olursa, başarısız olarak işaretlenmeden önce belirli sayıda yeniden denenir[3].
3. İşi Yeniden Deneme Mantığı: İş başarısızlıklarını ele almak için iş sınıfında bir "başarısız" yöntemi tanımlayabilirsiniz. Bu yöntem, bir iş başarısız olduğunda çağrılır ve işe özgü eylemleri gerçekleştirmenize olanak tanır[3].
İş Başarısızlıkları
1. Başarısız İşler Tablosu: Laravel, başarısız işleri bir `başarısız_işler' veritabanı tablosunda saklar. Bu tablo iş kimliği, bağlantı, kuyruk ve arıza süresi[3] hakkında bilgiler içerir.
2. Başarısız İşleri Görüntüleme: "Queue:failed" Artisan komutunu kullanarak tüm başarısız işleri görüntüleyebilirsiniz. Bu komut iş kimliğini, bağlantıyı, kuyruğu ve arıza süresini[3] listeler.
3. Başarısız İşleri Yeniden Deneme: Başarısız işleri, "queue:retry" Artisan komutunu kullanarak yeniden deneyebilirsiniz. Bu komut bir iş kimliğini argüman olarak alır ve işi yeniden dener. Ayrıca, başarısız olan tüm işleri 'kuyruk:tümünü yeniden dene'[3] seçeneğini kullanarak yeniden deneyebilirsiniz.
4. Başarısız İşleri Silme: Başarısız işleri Artisan'ın "queue:forget" komutunu kullanarak silebilirsiniz. Bu komut bir iş kimliğini argüman olarak alır ve işi siler. Başarısız olan tüm işleri 'queue:flush'[3] kullanarak da silebilirsiniz.
Çözüm
Laravel'in kuyruk sistemi, iş yeniden denemelerini ve başarısızlıklarını ele almak için sağlam mekanizmalar sağlar. Yeniden denemeleri yapılandırarak, başarısız işleri görüntüleyerek, başarısız işleri yeniden deneyerek ve başarısız işleri silerek, arka planda işleme görevlerinizin güvenilirliğini ve verimliliğini sağlayabilirsiniz.
Alıntılar:[1] https://stackoverflow.com/questions/30778924/laravel-4-retry-all-failed-jobs
[2] https://github.com/kirschbaum-development/laravel-queue-batch-retry
[3] https://ahmedshamim.com/posts/retry-mechanisms-in-laravel
[4] https://laravel.com/docs/11.x/queues
[5] https://stackoverflow.com/questions/63951783/laravel-queue-and-jobs-how-to-re-run-failed-job-later-on