Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kuinka voin estää työn katoamisen SQS-jonosta uudelleenyritysten jälkeen


Kuinka voin estää työn katoamisen SQS-jonosta uudelleenyritysten jälkeen


Voit estää työtä katoamasta SQS-jonosta uudelleenyritysten jälkeen kokeilemalla seuraavia tapoja:

1. Kasvata SQS:n enimmäisvastaanottorajaa:
- Oletuksena SQS:llä on "Maksimivastaanotto" -raja, joka määrittää, kuinka monta kertaa viesti voidaan vastaanottaa jonosta ennen kuin se siirretään kuolleeseen kirjainjonoon (DLQ).
- Nosta SQS-jonon "Maksimivastaanottojen" rajaa korkeampaan arvoon, kuten 10 tai 20, jotta voit tehdä enemmän uudelleenyrityksiä ennen kuin työ siirretään DLQ:lle.

2. Poista Dead-Letter Queue (DLQ) -jono käytöstä:
- Jos et tarvitse DLQ-toimintoa, voit poistaa sen käytöstä SQS-jonossasi. Tämä estää työn siirtämisen DLQ:han enimmäismäärän uudelleenyritysten jälkeen.
- Poistaaksesi DLQ:n käytöstä, voit joko luoda uuden SQS-jonon ilman DLQ:ta tai muuttaa olemassa olevan jonon asetuksia poistaaksesi DLQ:n.

3. Lisää näkyvyyden aikakatkaisua:
- SQS:n näkyvyyden aikakatkaisu määrittää, kuinka kauan viesti on näkymätön muille kuluttajille sen vastaanottamisen jälkeen.
- Lisää näkyvyyden aikakatkaisua suurempaan arvoon, kuten 1 tuntiin tai 2 tuntiin, jotta työlle jää enemmän aikaa käsittelyyn, ennen kuin se tulee taas näkyviin uutta yritystä varten.

4. Ota käyttöön mukautettu uudelleenyrityslogiikka:
- Sen sijaan, että luottaisit pelkästään "retryUntil" -menetelmään, voit ottaa käyttöön mukautetun uudelleenyrityslogiikan työsi "handle"-menetelmässä.
- Tämä voi sisältää yritysten määrän tarkistamisen ja työn manuaalisen vapauttamisen takaisin jonoon mukautetulla viiveellä sen sijaan, että jonojärjestelmän annettaisiin käsitellä uudelleenyritykset.

5. Käytä mukautettua SQS-jonoohjainta:
- Kuten edellisissä vastauksissa mainittiin, voit luoda mukautetun SQS-jonoohjaimen, joka laajentaa oletusarvoista SqsQueue-luokkaa ja lisää toimintoja uudelleenyritysten käsittelemiseen ja töiden katoamisen estämiseen.
- Tämä voi antaa sinulle paremman hallinnan uudelleenyrityskäyttäytymiseen ja varmistaa, että työt eivät katoa tai poistu jonosta ennenaikaisesti.

Ottamalla käyttöön yhden tai useamman näistä lähestymistavoista voit estää töitäsi katoamasta SQS-jonosta uudelleenyritysten jälkeen ja varmistaa, että ne käsitellään onnistuneesti tai siirretään DLQ:han odotetulla tavalla.

Lainaukset:
[1] https://dev.to/ichtrojan/configuring-laravel-queues-with-aws-sqs-3f0n
[2] https://www.honeybadger.io/blog/laravel-queues-deep-dive/
[3] https://stackoverflow.com/questions/71411471/laravel-retryuntil-job-exits-after-4th-retry-without-failing
[4] https://laracasts.com/discuss/channels/laravel/queue-job-retry-after-x-minutes-if-failed
[5] https://github.com/shiftonelabs/laravel-sqs-fifo-queue