RetryUntil-metoden i Laravel interagerar med AWS SQS på följande sätt:
1. Ange en deadline för återförsök: När du definierar metoden `retryUntil` i din jobbklass, anger du en deadline för när jobbet ska sluta försöka igen. Denna deadline skickas till SQS-kön som parametern "VisibilityTimeout" när jobbet skickas.
2. Hantera återförsök: När ett jobb misslyckas kommer SQS att göra meddelandet osynligt under den angivna "VisibilityTimeout"-varaktigheten, vilket gör att Laravel-köarbetaren kan försöka bearbeta jobbet igen. Om jobbet misslyckas igen inom "VisibilityTimeout"-perioden kommer SQS att fortsätta att göra meddelandet osynligt, vilket möjliggör ytterligare försök.
3. Att nå tidsfristen för återförsök: När "VisibilityTimeout"-perioden (som specificeras av `retryUntil`-metoden) har löpt ut, kommer SQS att göra meddelandet synligt igen, och Laravel-köarbetaren kommer inte längre att försöka bearbeta jobb. Vid denna tidpunkt kommer jobbet att betraktas som "misslyckat" och kan hanteras därefter (t.ex. flyttas till en dödbokstav).
4. Interaktion med SQS-konfigurationer: Det är viktigt att notera att beteendet för metoden `retryUntil` kan påverkas av SQS-kökonfigurationen, såsom inställningarna "MessageRetentionPeriod" och "VisibilityTimeout". Dessa SQS-nivåkonfigurationer kan åsidosätta eller interagera med `retryUntil`-metoden i Laravel.
Till exempel, om SQS "VisibilityTimeout" är inställt på ett lägre värde än "retryUntil"-deadline, kan jobbet göras om fler gånger än förväntat. Omvänt, om "MessageRetentionPeriod" är satt till ett lägre värde än "retryUntil"-deadline, kan jobbet tas bort från kön innan återförsöksdeadline nås.
För att säkerställa att "retryUntil"-metoden fungerar som förväntat, är det avgörande att anpassa Laravel-jobbkonfigurationen med SQS-kökonfigurationen, med hänsyn till interaktionerna mellan dessa inställningar.
Sammanfattningsvis, "retryUntil"-metoden i Laravel interagerar med AWS SQS genom att ställa in "VisibilityTimeout"-parametern, som styr jobbets beteende för omförsök. Men det övergripande beteendet påverkas också av SQS-kökonfigurationen, och det är viktigt att se till att dessa inställningar är korrekt anpassade.
Citat:[1] https://stackoverflow.com/questions/71411471/laravel-retryuntil-job-exits-after-4th-retry-without-failing
[2] https://www.honeybadger.io/blog/laravel-queues-deep-dive/
[3] https://ahmedshamim.com/posts/retry-mechanisms-in-laravel
[4] https://devinthewild.com/article/add-delay-job-retries-laravel
[5] https://laracasts.com/discuss/channels/laravel/queue-job-retry-after-x-minutes-if-failed