Ich habe einen Job in der Warteschlange in Laravel, der von Zeit zu Zeit aufgrund eines externen API-Fehlers aufgrund hoher Auslastung fehlschlägt. Das Problem ist, dass meine Auswahl so zu sein scheint, dass die Laravel-Queue weiterhin die API mit Anfragen hämmert, bis sie erfolgreich ist, oder sie angewiesen wird, nach X-Anfragen zu stoppen.Wie kann ich Verzögerungen zwischen fehlgeschlagenen Jobs in der Warteschlange in Laravel erstellen?
Gibt es eine Möglichkeit für mich, basierend darauf, wie der Job fehlschlägt, es in 5 Minuten erneut zu versuchen, statt weiter zu hämmern?
Ich möchte den integrierten Warteschlangenhandler verwenden, aber die Wiederholungsfunktionalität scheint nicht so zu sein, dass sie reale Fehlerszenarien verarbeiten kann. Ich würde denken, dass viele Gründe für das Scheitern eines Jobs nicht durch sofortiges erneutes Versuchen gelöst werden.
Danke, ich hatte ein Missverständnis, was die Freigabe der Arbeit tut. Wo hast du die delete() Funktion gefunden? Das scheint nicht dokumentiert zu sein. Ich hoffe, dass es eine unterstützte Möglichkeit gibt, den Job zu entfernen, indem Sie ihn in die Tabelle fehlgeschlagener Jobs einfügen. – Citizen
Ich habe es in der Quelle gefunden: https://github.com/laravel/framework/blob/5.1/src/Illuminate/Queue/InteractsWithQueue.php –
Über das Hinzufügen von ihnen zu der fehlgeschlagenen Aufträge Tabelle. Ich bin mir nicht ganz sicher, wie das funktioniert, aber ich glaube, Sie müssen die Ausnahme (erneut) werfen, damit sie auch vom Warteschlangenarbeiter behandelt wird. –