La AWS SDK for Java versione 1.x è entrata in modalità manutenzione il 31 luglio 2024 e sarà disponibile il 31 end-of-support
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à.
Utilizzo di code DLQ in Amazon SQS
Amazon SQSfornisce supporto percode a lettere morte. Una coda a cui altre code (origini) possono mirare per i messaggi che non possono essere elaborati correttamente. Puoi riservare e isolare questi messaggi nella coda DLQ per determinare perché l'elaborazione non è riuscita.
Creazione di una coda a lettere morte
Una coda con lettere morte viene creata allo stesso modo di una coda normale, ma ha le seguenti restrizioni:
-
Una coda con lettere morte deve essere dello stesso tipo di coda (FIFO o standard) della coda di origine.
-
È necessario creare una coda con lettere morte usando la stessaAccount AWSe regione come coda di origine.
Qui creiamo due identiciAmazon SQScode, una delle quali servirà come coda di lettere morte:
Importazioni
import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.AmazonSQSException;
Codice
final AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); // Create source queue try { sqs.createQueue(src_queue_name); } catch (AmazonSQSException e) { if (!e.getErrorCode().equals("QueueAlreadyExists")) { throw e; } } // Create dead-letter queue try { sqs.createQueue(dl_queue_name); } catch (AmazonSQSException e) { if (!e.getErrorCode().equals("QueueAlreadyExists")) { throw e; } }
Vedi l'esempio completo
Designazione di una coda a lettere morte per una coda sorgente
Per designare una coda con lettere morte, è necessario innanzitutto creare unpolitica di redrivee quindi imposta il criterio negli attributi della coda. Un criterio di redrive è specificato in JSON e specifica l'ARN della coda di lettere morte e il numero massimo di volte in cui il messaggio può essere ricevuto e non elaborato prima che venga inviato alla coda delle lettere morte.
Per impostare il criterio di redrive per la coda di origine, chiama la classe AmazonSQS»setQueueAttributes
metodo con unSetQueueAttributesRequestoggetto per il quale hai impostato ilRedrivePolicy
attributo con la tua politica di redrive JSON.
Importazioni
import com.amazonaws.services.sqs.model.GetQueueAttributesRequest; import com.amazonaws.services.sqs.model.GetQueueAttributesResult; import com.amazonaws.services.sqs.model.SetQueueAttributesRequest;
Codice
String dl_queue_url = sqs.getQueueUrl(dl_queue_name) .getQueueUrl(); GetQueueAttributesResult queue_attrs = sqs.getQueueAttributes( new GetQueueAttributesRequest(dl_queue_url) .withAttributeNames("QueueArn")); String dl_queue_arn = queue_attrs.getAttributes().get("QueueArn"); // Set dead letter queue with redrive policy on source queue. String src_queue_url = sqs.getQueueUrl(src_queue_name) .getQueueUrl(); SetQueueAttributesRequest request = new SetQueueAttributesRequest() .withQueueUrl(src_queue_url) .addAttributesEntry("RedrivePolicy", "{\"maxReceiveCount\":\"5\", \"deadLetterTargetArn\":\"" + dl_queue_arn + "\"}"); sqs.setQueueAttributes(request);
Vedi l'esempio completo
Ulteriori informazioni
-
Utilizzo diAmazon SQSCode DLQnellaAmazon SQSGuida per gli sviluppatori
-
SetQueueAttributesnellaAmazon SQSDocumentazione di riferimento API