Laravel eilių sistema apdoroja darbo pakartojimus ir nesėkmes šiais būdais:
Darbo kartojimas
1. Konfigūruojami pakartotiniai bandymai: galite sukonfigūruoti užduotis, kad jos būtų bandomos iš naujo, jei jos nepavyktų dėl laikinų klaidų, taip padidindami sistemos patikimumą. Tai atliekama nustatant ypatybę „bandymai“ darbo klasėje[2][3].
2. Automatiniai pakartotiniai bandymai: „Laravel“ suteikia automatinius bandymus nesėkmingoms užduotims atlikti. Jei užduotis nepavyksta, ji bus bandoma iš naujo tam tikrą skaičių kartų, kol bus pažymėta kaip nepavykusi[2][3].
3. Užduoties pakartotinio bandymo logika: užduočių klasėje galite apibrėžti „nepavykusio“ metodą, skirtą užduoties gedimams tvarkyti. Šis metodas iškviečiamas, kai užduotis nepavyksta, ir leidžia atlikti su darbu susijusius veiksmus[3].
Darbo nesėkmės
1. Nepavykusių užduočių lentelė: „Laravel“ išsaugo nepavykusias užduotis duomenų bazės lentelėje „failed_jobs“. Šioje lentelėje pateikiama informacija apie užduoties ID, ryšį, eilę ir gedimo laiką[3].
2. Nepavykusių užduočių peržiūra: visas nepavykusias užduotis galite peržiūrėti naudodami komandą „queue:failed“ „Artisan“. Ši komanda išvardija užduoties ID, ryšį, eilę ir gedimo laiką[3].
3. Pakartotinai bandoma atlikti nepavykusias užduotis: galite dar kartą bandyti atlikti nepavykusias užduotis naudodami komandą „queue:retry“ „Artisan“. Ši komanda naudoja darbo ID kaip argumentą ir bando atlikti užduotį dar kartą. Taip pat galite iš naujo bandyti atlikti visas nepavykusias užduotis naudodami `queue:retry all`[3][5].
4. Nepavykusių užduočių trynimas: nepavykusias užduotis galite ištrinti naudodami komandą „queue:forget“ „Artisan“. Ši komanda kaip argumentą paima darbo ID ir ištrina užduotį. Taip pat galite ištrinti visas nepavykusias užduotis naudodami `queue:flush`[3].
Išvada
„Laravel“ eilių sistema užtikrina patikimus darbo pakartojimų ir gedimų tvarkymo mechanizmus. Konfigūruodami pakartotinius bandymus, peržiūrėdami nepavykusias užduotis, pakartotinai bandydami nepavykusias užduotis ir ištrindami nepavykusias užduotis, galite užtikrinti foninio apdorojimo užduočių patikimumą ir efektyvumą.
Citatos:[1] https://laracasts.com/discuss/channels/laravel/laravel-queue-retry-jobs-5-times
[2] https://wpwebinfotech.com/blog/laravel-queue-system/
[3] https://laravel.com/docs/5.1/queues
[4] https://laracasts.com/discuss/channels/laravel/queue-job-retry-after-x-minutes-if-failed
[5] https://stackoverflow.com/questions/30778924/laravel-4-retry-all-failed-jobs