Das Warteschlangensystem von Laravel behandelt Auftragswiederholungen und -fehler auf folgende Weise:
Auftragswiederholungen
1. Konfigurierbare Wiederholungen: Sie können Jobs so konfigurieren, dass sie wiederholt werden, wenn sie aufgrund vorübergehender Fehler fehlschlagen, wodurch die Systemzuverlässigkeit erhöht wird. Dies erfolgt durch Festlegen der Eigenschaft „tries“ für die Jobklasse[2][3].
2. Automatische Wiederholungsversuche: Laravel bietet automatische Wiederholungsversuche für fehlgeschlagene Jobs. Wenn ein Job fehlschlägt, wird er eine bestimmte Anzahl von Malen wiederholt, bevor er als fehlgeschlagen markiert wird[2][3].
3. Job-Wiederholungslogik: Sie können eine „fehlgeschlagene“ Methode für die Jobklasse definieren, um Jobfehler zu behandeln. Diese Methode wird aufgerufen, wenn ein Auftrag fehlschlägt, und ermöglicht Ihnen die Durchführung auftragsspezifischer Aktionen[3].
Auftragsfehler
1. Tabelle fehlgeschlagener Jobs: Laravel speichert fehlgeschlagene Jobs in einer Datenbanktabelle „failed_jobs“. Diese Tabelle enthält Informationen zur Job-ID, Verbindung, Warteschlange und Fehlerzeit[3].
2. Anzeigen fehlgeschlagener Jobs: Sie können alle fehlgeschlagenen Jobs mit dem Artisan-Befehl „queue:failed“ anzeigen. Dieser Befehl listet die Job-ID, die Verbindung, die Warteschlange und die Fehlerzeit auf[3].
3. Fehlgeschlagene Jobs wiederholen: Sie können fehlgeschlagene Jobs mit dem Artisan-Befehl „queue:retry“ wiederholen. Dieser Befehl verwendet eine Job-ID als Argument und versucht den Job erneut. Sie können auch alle fehlgeschlagenen Jobs erneut versuchen, indem Sie „queue:retry all“[3][5] verwenden.
4. Fehlgeschlagene Jobs löschen: Sie können fehlgeschlagene Jobs mit dem Artisan-Befehl „queue:forget“ löschen. Dieser Befehl verwendet eine Job-ID als Argument und löscht den Job. Sie können auch alle fehlgeschlagenen Jobs löschen, indem Sie „queue:flush“[3] verwenden.
Abschluss
Das Warteschlangensystem von Laravel bietet robuste Mechanismen für die Handhabung von Auftragswiederholungen und -fehlern. Durch das Konfigurieren von Wiederholungsversuchen, das Anzeigen fehlgeschlagener Jobs, das Wiederholen fehlgeschlagener Jobs und das Löschen fehlgeschlagener Jobs können Sie die Zuverlässigkeit und Effizienz Ihrer Hintergrundverarbeitungsaufgaben sicherstellen.
Zitate:[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