Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kā novērst darba pazušanu no SQS rindas pēc atkārtotajiem mēģinājumiem


Kā novērst darba pazušanu no SQS rindas pēc atkārtotajiem mēģinājumiem


Lai novērstu darba pazušanu no SQS rindas pēc atkārtotiem mēģinājumiem, varat izmēģināt šādas pieejas:

1. Palieliniet maksimālo saņemšanas ierobežojumu SQS:
- Pēc noklusējuma SQS ir “Maksimālās saņemšanas” ierobežojums, kas nosaka, cik reižu ziņojumu var saņemt no rindas, pirms tas tiek pārvietots uz “Dead-Letter Queue” (DLQ).
- Palieliniet SQS rindas maksimālo saņemšanas ierobežojumu līdz lielākai vērtībai, piemēram, 10 vai 20, lai atļautu vairāk mēģinājumu, pirms darbs tiek pārvietots uz DLQ.

2. Atspējojiet mirušo burtu rindu (DLQ):
- Ja jums nav nepieciešama DLQ funkcionalitāte, varat to atspējot savai SQS rindai. Tas neļaus darbu pārvietot uz DLQ pēc maksimālā atkārtoto mēģinājumu skaita.
- Lai atspējotu DLQ, varat izveidot jaunu SQS rindu bez DLQ vai modificēt esošās rindas konfigurāciju, lai noņemtu DLQ.

3. Palieliniet redzamības taimautu:
- Redzamības taimauts SQS nosaka laiku, cik ilgi ziņojums ir neredzams citiem patērētājiem pēc tā saņemšanas.
- Palieliniet redzamības noildzes vērtību līdz lielākai vērtībai, piemēram, 1 stundai vai 2 stundām, lai darbs būtu vairāk laika jāapstrādā, pirms tas atkal kļūst redzams citam atkārtotam mēģinājumam.

4. Ieviesiet pielāgoto atkārtotā mēģinājuma loģiku:
- Tā vietā, lai paļautos tikai uz metodi “retryUntil”, varat ieviest pielāgotu atkārtošanas loģiku sava darba “handle” metodē.
- Tas var ietvert mēģinājumu skaita pārbaudi un manuālu darba atbrīvošanu rindā ar pielāgotu aizkavi, nevis ļaut rindu sistēmai apstrādāt atkārtojumus.

5. Izmantojiet pielāgotu SQS rindas draiveri:
- Kā minēts iepriekšējās atbildēs, varat izveidot pielāgotu SQS rindas draiveri, kas paplašina noklusējuma SqsQueue klasi un pievieno papildu funkcionalitāti, lai apstrādātu atkārtotus mēģinājumus un novērstu darbu pazušanu.
- Tas var sniegt jums lielāku kontroli pār atkārtotā mēģinājuma darbību un nodrošināt, ka darbi netiek zaudēti vai priekšlaicīgi noņemti no rindas.

Ieviešot vienu vai vairākas no šīm pieejām, varat novērst savu darbu pazušanu no SQS rindas pēc atkārtotajiem mēģinājumiem un nodrošināt, ka tie tiek veiksmīgi apstrādāti vai pārvietoti uz DLQ, kā paredzēts.

Citāts:
[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