Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kuidas vältida töö kadumist SQS-i järjekorrast pärast korduskatseid?


Kuidas vältida töö kadumist SQS-i järjekorrast pärast korduskatseid?


Selleks, et töö pärast korduskatseid SQS-i järjekorrast ei kaoks, võite proovida järgmisi lähenemisviise.

1. Suurendage SQS-i maksimaalset vastuvõtupiirangut:
- Vaikimisi on SQS-il "Maksimaalsete vastuvõttude" limiit, mis määrab, mitu korda saab sõnumi järjekorrast maksimaalselt vastu võtta, enne kui see liigutatakse surnud kirjade järjekorda (DLQ).
- Suurendage oma SQS-i järjekorra "Maksimaalsete vastuvõttude" limiiti suurema väärtuseni, näiteks 10 või 20, et võimaldada rohkem korduskatseid enne töö teisaldamist DLQ-sse.

2. Keelake Dead-Letter Queue (DLQ):
- Kui te ei vaja DLQ-funktsiooni, saate selle oma SQS-i järjekorra jaoks keelata. See hoiab ära töö teisaldamise DLQ-sse pärast maksimaalset korduskatsete arvu.
- DLQ-i keelamiseks saate luua uue SQS-i järjekorra ilma DLQ-ta või muuta olemasoleva järjekorra konfiguratsiooni, et DLQ-d eemaldada.

3. Nähtavuse ajalõpu suurendamine:
- SQS-i nähtavuse ajalõpp määrab aja, mille jooksul sõnum on pärast selle vastuvõtmist teistele tarbijatele nähtamatu.
- Suurendage nähtavuse ajalõppu kõrgemale väärtusele, nt 1 tund või 2 tundi, et anda töö töötlemiseks rohkem aega, enne kui see uueks proovimiseks uuesti nähtavaks muutub.

4. Rakendage kohandatud uuesti proovimise loogikat:
- Selle asemel, et tugineda ainult meetodile „retryUntil”, saate rakendada kohandatud uuesti proovimise loogikat oma töö „käepideme“ meetodis.
- See võib hõlmata katsete arvu kontrollimist ja töö käsitsi tagasi järjekorda vabastamist kohandatud viivitusega, selle asemel, et lasta järjekorrasüsteemil korduskatseid teha.

5. Kasutage kohandatud SQS-i järjekorradraiverit:
- Nagu eelmistes vastustes mainitud, saate luua kohandatud SQS-i järjekorra draiveri, mis laiendab vaikeklassi SqsQueue ja lisab täiendavaid funktsioone korduskatsete käsitlemiseks ja tööde kadumise vältimiseks.
- See võib anda teile rohkem kontrolli uuesti proovimise käitumise üle ja tagada, et töökohti ei kaoks ega eemaldataks järjekorrast enneaegselt.

Rakendades ühte või mitut neist lähenemisviisidest, saate vältida oma tööde kadumist SQS-i järjekorrast pärast korduskatseid ja tagada, et need töödeldakse edukalt või teisaldatakse DLQ-sse ootuspäraselt.

Tsitaadid:
[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