Die Wiederholungsmethode in Laravel wird hauptsächlich in der Warteschlange verwendet, um zu kontrollieren, wie lange ein Job weiterhin nachgeben sollte, bevor sie aufgeben. Es gibt die Zeitüberschreitungszeit an, wonach der Arbeitsarbeiter nicht mehr versucht, diesen Job erneut zu verarbeiten, unabhängig von der Anzahl der Versuche, die unternommen wurden. Diese Methode gibt eine DateTime -Instanz zurück, die die absolute Cutoff -Zeit für die Wiederholung eines Jobs anzeigt.
Zu den gemeinsamen Anwendungsfällen für die Wiederholungsmethode in Laravel gehören:
Drosseln und bewertende Arbeitsplätze:
- Wenn Sie mit externen APIs interagieren, die die Ratengrenzen (z. B. maximal 10 Anfragen pro Minute) erzwingen, können die Arbeitsplätze wiederholt, jedoch nur bis zu einer bestimmten Frist wiedergegeben werden. Die Verwendung von Wiederholung hilft, eine maximale Wiederholungszeit (z. B. eine Stunde oder 24 Stunden) durchzusetzen, um eine unbestimmte Wiederholungsschleifen zu verhindern, die die Warteschlange überfluten könnten.
- Dieser Ansatz ist nützlich, wenn Arbeitsplätze aufgrund der vorübergehenden Rate, die durch Dienste von Drittanbietern auferlegt oder drosseln, scheitern und mehrmals, jedoch nicht für immer wiedergegeben werden müssen.
Zeitbasierte Versuche statt zählbasiert:
- Wiederholung kann als Alternative zu der $ Versuchseigenschaft verwendet werden, die die maximale Anzahl von Wiederholungsversuchen für einen Job definiert.
- Anstatt die Wiederholungsversuche nach Anzahl zu begrenzen, werden die Grenzwerte nach der Zeit wieder aufgenommen. Der Job wird bis zum angegebenen Zeitlimit so oft wie möglich wiederholen.
- Dies kann hilfreich sein, wenn es schwierig ist zu schätzen, wie viele Versuche erforderlich sein könnten und wann die Zeitbeschränkung wichtiger ist als die genaue Wiederholungszahl.
Umgang mit hoher Ausfallwahrscheinlichkeitsvorgänge:
- Für Operationen wie das Senden von HTTP-Anfragen an instabile APIs von Drittanbietern, die möglicherweise sporadisch fehlschlagen, ermöglicht es den Auftrag, dass der Job weiterhin versucht wird, nur innerhalb eines vernünftigen Zeitüberschreitungsfensters.
- Dies verringert das Risiko, dass Arbeitsplätze zu früh aufgegeben werden und gleichzeitig sicherstellen, dass sie nicht für immer Ressourcen verschwenden.
Anmutiger Verschlechterung von Zeitüberschreitungen:
- Wenn Arbeitsplätze langwierige Operationen oder nachgeschaltete Abhängigkeiten beinhalten, die vorübergehend eine Zeitüberschreitung oder Verlangsamung haben, können der Entwickler eine globale Zeitüberschreitungsgrenze festlegen, über die die Wiederholung des Jobs sinnlos wird.
- Dies hilft, die Warteschlange in Bewegung zu halten und verhindert, dass festgefahrene oder langsame Jobs die Ressourcen auf unbestimmte Zeit blockieren.
Kombinieren von Wiederholung mit Job Middleware:
- Wiederholung ist nützlich, wenn es mit Job Middleware kombiniert wird, z. B. Ratenlimit- oder Drosselungs -Middleware, die die Bearbeitungsrate der Job -Warteschlangen steuert.
- Wenn Sie beispielsweise Tausende von Arbeitsplätzen auf einen bestimmten Durchsatz einreichen, kann er die Lebensdauer des Jobs festlegen. Wenn ein Job wiederholt gedrosselt und neu ausgeht, wird er schließlich aufhören, nach dem Verbrennen der Wiederholung nachzureißen und einen unendlichen Wiederholungszyklus zu vermeiden.
- Dieses Muster unterscheidet zwischen echten Fehlern und Jobs, die aufgrund von Ratengrenzen einfach verzögert werden.
Benutzerdefinierte Wiederholungslogik:
- Entwickler verwenden manchmal Retypryuntil, um benutzerdefinierte Wiederholungsstrategien zu implementieren. Beispielsweise kann man die Logik innerhalb der Methode hinzufügen, um die Wiederholungszeiten dynamisch auf der Grundlage externer Bedingungen wie Systemlast oder API -Status zu erweitern oder zu reduzieren.
- Dies verleiht dem Wiederholungsmechanismus Flexibilität über eine feste Anzahl von Wiederholungen oder eine feste Zeitüberschreitung.
Unterscheidung zwischen Fehlern und Wiederholungen:
- Wiederholung kann dazu beitragen, Fehlerprotokolle aufzuräumen, indem sie übermäßig aggressive Wiederholungen von Arbeitsplätzen verhindern, die immer wieder im Wiederholungsfenster liegen.
- Entwickler können Try/Catch innerhalb der Job-Handel-Methode implementieren und den Job explizit nicht bestehen, wenn eine nicht rekublikierbare Ausnahme vor dem Wiederholungszeitübergang auftritt.
- Dadurch können wiedergegebene Arbeitsplätze bis zum Auszeit über die Auszeit des Versagens nachlassen, während die Arbeiten sofort aufhören und die Klarheit der Versagensstaaten verbessern.
Zeitüberschreitung für preisbegrenzte Jobs:
- Jobs, die aufgrund von Ratenbeschränkungen in die Warteschlange gelöst werden, erhöhen die Versuchsanzahl, sodass Wiederholung als ausfallsicherer Timer fungieren kann.
- Wenn Rate Limited Jobs immer wieder freigegeben und wiedergegeben werden, garantiert sich wieder, dass sie nicht über eine festgelegte Zeitlimitzeit hinausgehen werden.
Praktische Beispiele:
- Eine E -Mail -Sende, die alle 5 Minuten sendet, aber nach 1 Stunde aufhört, erneut zu versuchen.
- Ein Zahlungsbearbeitungsauftrag, der bis zu 30 Minuten nachdehnt, wenn externe Zahlungsgateways mit Fehlern oder Zeitüberschreitungen reagieren.
- API -Integrationsjobs, die 24 Stunden lang die API -Ratengrenzen und vorübergehende Abgänge wiederholen.
Die Warteschlangendokumentation von Laravel hebt den Wiederauftauchen auf, um die maximale Zeit anzugeben, die ein Job wiederholt werden sollte. Es überschreibt das Eigentum von $ Versuch, wenn beide existieren. Entwickler setzten sich wieder auf, einen zukünftigen Zeitstempel zurückzugeben, über den Laravel den Job nicht mehr versuchen wird.
Trotz seines Nutzens stellen einige Entwickler Einschränkungen beim Wiederholungsverhalten fest, z. Außerdem verarbeitet die Wiederholungsmethode keine direkte Logik wie Inkrementierungsversuche oder Fangen von Ausnahmen, die innerhalb der Handelsmethode oder nach zusätzlicher Middleware behandelt werden müssen.
Zusammenfassend ist Retypryuntil eine leistungsstarke Methode in Laravel zur Kontrolle der Lebensdauer der in der Warteschlange, die auf der Zeit und nicht auf der Anzahl der Versuche beruht. Es wird üblicherweise für die Wiederholung von Arbeitsplätzen verwendet, die mit ratenbegrenzten APIs interagieren, Operationen mit hohen Ausfallwahrscheinlichkeiten und die Durchsetzung von Timeouts wiederholten, wodurch die Robustheit und die Kontrolle des Warteschlangenverarbeitungssystems von Laravel verbessert werden.