Risolvi i problemi relativi alla coda di lettera morta di Amazon SQS e al redrive DLQ - Amazon Simple Queue Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risolvi i problemi relativi alla coda di lettera morta di Amazon SQS e al redrive DLQ

I seguenti argomenti trattano le cause più comuni dei problemi di Amazon SQS DLQ e DLQ redrive e come risolverli. Per ulteriori informazioni, consulta Come posso risolvere i problemi di redrive DLQ di Amazon SQS? nella Knowledge Center Guide.AWS

Problemi relativi al DLQ

Scopri i problemi DLQ più comuni e come risolverli.

La visualizzazione dei messaggi utilizzando la console può comportarne il trasferimento a una coda DLQ

Amazon SQS conteggia la visualizzazione di un messaggio nella console rispetto alle policy di redrive della coda corrispondente. Pertanto, se si visualizza un messaggio nella console il numero di volte specificato nella politica di redrive della coda corrispondente, il messaggio viene spostato nella coda di lettere morte della coda corrispondente.

Per correggere questo comportamento, puoi procedere in uno dei seguenti modi:

  • Aumentare l'impostazione Maximum Receives (Ricezioni massime) per la policy di reindirizzamento della coda corrispondente.

  • Evitare di visualizzare i messaggi della coda corrispondente nella console.

NumberOfMessagesSent e NumberOfMessagesReceived per una coda DLQ non corrispondono

Se invii un messaggio a una coda DLQ manualmente, viene acquisito dal parametro NumberOfMessagesSent. Tuttavia, se viene inviato un messaggio a una coda DLQ a seguito di un tentativo di elaborazione non riuscito, non viene acquisito da questo parametro. Pertanto, è possibile che i valori NumberOfMessagesReceiveddi NumberOfMessagesSent e siano diversi.

Creazione e configurazione di un redrive per una coda di lettere non scritte

Il redrive della coda di lettere morte richiede l'impostazione delle autorizzazioni appropriate per Amazon SQS per ricevere messaggi dalla coda di lettere non scritte e inviare messaggi alla coda di destinazione. Se non disponi delle autorizzazioni corrette, l'operazione di reindirizzamento della coda con lettere morte può fallire. Puoi visualizzare lo stato dell'attività di reindirizzamento dei messaggi per risolvere i problemi e riprovare.

Gestione degli errori dei messaggi di coda standard e FIFO

Le code standard continuano a elaborare i messaggi fino alla scadenza del periodo di conservazione. Questa elaborazione continua riduce al minimo le possibilità che la coda venga bloccata da messaggi non utilizzati. La presenza di un gran numero di messaggi che l'utente non riesce a eliminare ripetutamente può aumentare i costi e comportare un carico aggiuntivo sull'hardware. Per contenere i costi, sposta i messaggi non riusciti nella coda delle lettere morte.

Le code standard consentono inoltre un numero elevato di messaggi in volo. Se la maggior parte dei tuoi messaggi non può essere consumata e non viene inviata a una coda di lettere morte, la velocità di elaborazione dei messaggi può rallentare. Per mantenere l'efficienza della coda, assicurati che l'applicazione gestisca correttamente l'elaborazione dei messaggi.

Le code FIFO garantiscono l'elaborazione "exactly-once" utilizzando messaggi in sequenza da un gruppo di messaggi. Pertanto, sebbene l'utente possa continuare a recuperare i messaggi ordinati da un altro gruppo di messaggi, il primo gruppo di messaggi rimane non disponibile fino a quando il messaggio che blocca la coda non viene elaborato correttamente o spostato in una coda di lettere morte.

Inoltre, le code FIFO consentono un numero inferiore di messaggi in transito. Per evitare che la coda FIFO venga bloccata da un messaggio, assicurati che l'applicazione gestisca correttamente l'elaborazione dei messaggi.

Per ulteriori informazioni, consulta Quote di messaggi Amazon SQS e Lavorare con i messaggi Amazon SQS.

Problemi con DLQ-Redrive

Scopri i problemi più comuni di DLQ-Redrive e come risolverli.

AccessDenied problema di autorizzazione

L'AccessDeniederrore si verifica quando il redrive DLQ fallisce perché l'entità AWS Identity and Access Management (IAM) non dispone delle autorizzazioni richieste.

Esempio di messaggio di errore:

Failed to create redrive task. Error code: AccessDenied - Queue Permissions to Redrive.

Le seguenti autorizzazioni API sono necessarie per effettuare richieste di redrive DLQ:

Per avviare il reindirizzamento di un messaggio:

  • Autorizzazioni per la coda di lettere non scritte:

    • sqs:StartMessageMoveTask

    • sqs:ReceiveMessage

    • sqs:DeleteMessage

    • sqs:GetQueueAttributes

    • kms:Decrypt— Quando la coda delle lettere non scritte o la coda dei sorgenti originali sono crittografate.

  • Autorizzazioni per la coda di destinazione:

    • sqs:SendMessage

    • kms:GenerateDataKey— Quando la coda di destinazione è crittografata.

    • kms:Decrypt — Quando la coda di destinazione è crittografata.

Per annullare la reindirizzazione di un messaggio in corso:

  • Autorizzazioni per la coda di lettere non scritte:

    • sqs:CancelMessageMoveTask

    • sqs:ReceiveMessage

    • sqs:DeleteMessage

    • sqs:GetQueueAttributes

    • kms:Decrypt— Quando la coda delle lettere non scritte o la coda dei sorgenti originali sono crittografate.

Per mostrare lo stato dello spostamento di un messaggio:

  • Autorizzazioni per la coda di lettere non scritte:

    • sqs:ListMessageMoveTasks

    • sqs:GetQueueAttributes

NonExistentQueue errore

L'NonExistentQueueerrore si verifica quando la coda di origine di Amazon SQS non esiste o è stata eliminata. Controlla e reindirizza a una coda Amazon SQS presente.

Esempio di messaggio di errore:

Failed: AWS.SimpleQueueService.NonExistentQueue

CouldNotDetermineMessageErrore di origine

L'CouldNotDetermineMessageSourceerrore si verifica quando si tenta di avviare un redrive DLQ con i seguenti scenari:

  • Un messaggio Amazon SQS inviato direttamente al DLQ con API. SendMessage

  • Un messaggio dall'argomento AWS Lambda o dalla funzione Amazon Simple Notification Service (Amazon SNS) con il DLQ configurato.

Per risolvere questo errore, scegli Redrive verso una destinazione personalizzata quando avvii il redrive. Quindi, inserisci l'ARN della coda Amazon SQS per spostare tutti i messaggi dal DLQ alla coda di destinazione.

Esempio di messaggio di errore:

Failed: CouldNotDetermineMessageSource