A Laravel várólistarendszere a következő módokon kezeli a job-újrapróbálkozásokat és a hibákat:
Munka újrapróbálkozása
1. Konfigurálható újrapróbálkozások: Beállíthatja, hogy a jobok újrapróbálhatók legyenek, ha átmeneti hibák miatt meghiúsulnak, ezzel növelve a rendszer megbízhatóságát. Ez a `tries` tulajdonság beállításával történik a feladatosztályon[2][3].
2. Automatikus újrapróbálkozások: A Laravel automatikus újrapróbálkozást biztosít a sikertelen feladatokhoz. Ha egy feladat meghiúsul, a rendszer meghatározott számú alkalommal újrapróbálja, mielőtt sikertelenként jelölné meg[2][3].
3. Job Retry Logic: Megadhat egy "sikertelen" metódust a jobosztályon a feladathiba kezelésére. Ez a módszer akkor hívódik meg, ha egy job meghiúsul, és lehetővé teszi a jobspecifikus műveletek végrehajtását[3].
Munkahibák
1. Failed Jobs Table: A Laravel a sikertelen feladatokat egy "sikertelen_jobs" adatbázistáblában tárolja. Ez a táblázat információkat tartalmaz a jobazonosítóról, a kapcsolatról, a sorról és a hibaidőről[3].
2. Sikertelen munkák megtekintése: Az összes sikertelen munkát megtekintheti a "queue:failed" Artisan paranccsal. Ez a parancs felsorolja a jobazonosítót, a kapcsolatot, a sort és a hibaidőt[3].
3. Sikertelen feladatok újrapróbálása: A sikertelen feladatokat a `queue:retry` Artisan paranccsal próbálhatja újra. Ez a parancs argumentumként egy jobazonosítót vesz fel, és újra megpróbálja a feladatot. Az összes sikertelen feladatot a `queue:retry all`[3][5] használatával is újrapróbálhatja.
4. Sikertelen feladatok törlése: A sikertelen feladatokat a `queue:forget` Artisan paranccsal törölheti. Ez a parancs egy jobazonosítót vesz fel argumentumként, és törli a feladatot. Az összes sikertelen munkát a `queue:flush`[3] használatával is törölheti.
Következtetés
A Laravel várakozási sorrendszere robusztus mechanizmusokat biztosít a feladat-újrapróbálkozások és -hibák kezelésére. Az újrapróbálkozások konfigurálásával, a sikertelen feladatok megtekintésével, a sikertelen feladatok újrapróbálásával és a sikertelen feladatok törlésével biztosíthatja a háttérben végzett feldolgozási feladatok megbízhatóságát és hatékonyságát.
Idézetek:[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