La AWS SDK for Java versión 1.x entró en modo de mantenimiento el 31 de julio de 2024 y estará disponible el 31 de end-of-support
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso de colas de mensajes fallidos en Amazon SQS
Amazon SQS añade compatibilidad para las colas de mensajes fallidos. Una cola de mensajes fallidos es una cola a la que otras pueden enviar mensajes que no se pueden procesar correctamente. Puede apartar y aislar estos mensajes en la cola de mensajes fallidos para determinar por qué no se procesaron correctamente.
Creación de una cola de mensajes fallidos
Una cola de mensajes fallidos se crea de la misma forma que una cola normal, pero con las siguientes restricciones:
-
Una cola de mensajes fallidos debe ser el mismo tipo de cola (FIFO o estándar) que la cola de origen.
-
Una cola de mensajes fallidos se debe crear con la misma cuenta y región de Cuenta de AWS que la cola de origen.
Aquí creamos dos colas de Amazon SQS idénticas, una de los cuales actuará como la cola de mensajes fallidos:
Importaciones
import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.AmazonSQSException;
Code
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; } }
Consulte el ejemplo completo
Designación de una cola de mensajes fallidos para una cola de origen
Para designar una cola de mensajes fallidos, primero debe crear una política de redireccionamiento y, a continuación, configurar la política en los atributos de la cola. Una política de redireccionamiento se especifica en JSON e indica el ARN de la cola de mensajes fallidos y el número máximo de veces que se puede recibir y no procesar el mensaje antes de que se envíe a la cola de mensajes fallidos.
Para establecer la política de redireccionamiento de la cola de origen, llame al método de la clase de setQueueAttributes
de AmazonSQS con un objeto SetQueueAttributesRequest para el que haya establecido el atributo RedrivePolicy
con su política de redireccionamiento JSON.
Importaciones
import com.amazonaws.services.sqs.model.GetQueueAttributesRequest; import com.amazonaws.services.sqs.model.GetQueueAttributesResult; import com.amazonaws.services.sqs.model.SetQueueAttributesRequest;
Code
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);
Consulte el ejemplo completo
Más información
-
Uso de colas de cartas muertas de Amazon SQS en la Guía para desarrolladores de Amazon SQS
-
SetQueueAttributes en la Referencia de la API de Amazon SQS