Envío de atributos de mensajes a una cola de Amazon SQS - Amazon Simple Queue Service

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.

Envío de atributos de mensajes a una cola de Amazon SQS

Puede incluir metadatos estructurados (como marcas temporales, datos geoespaciales, firmas e identificadores) con los mensajes mediante atributos de mensaje. Para obtener más información, consulte Atributos de mensajes de Amazon SQS.

Antes de ejecutar el código de ejemplo, asegúrese de haber establecido sus AWS credenciales. Para obtener más información, consulte Configurar AWS las credenciales y la región para el desarrollo en la Guía para AWS SDK for Java 2.x desarrolladores.

Definición de atributos

Para definir un atributo para un mensaje, agregue el siguiente código, que utiliza el tipo de datos MessageAttributeValue. Para obtener más información, consulte Componentes de atributos de mensajes y Tipos de datos de atributos de mensajes.

Calcula AWS SDK for Java automáticamente las sumas de comprobación del cuerpo y los atributos del mensaje y las compara con los datos que devuelve Amazon SQS. Para obtener más información, consulte la Guía para desarrolladores de AWS SDK for Java 2.x y Cálculo del resumen del mensaje MD5 para atributos de mensajes para otros lenguajes de programación.

String

En este ejemplo se define un atributo String denominado Name con el valor Jane.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("Name", new MessageAttributeValue() .withDataType("String") .withStringValue("Jane"));
Number

En este ejemplo se define un atributo Number denominado AccurateWeight con el valor 230.000000000000000001.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("AccurateWeight", new MessageAttributeValue() .withDataType("Number") .withStringValue("230.000000000000000001"));
Binary

En este ejemplo se define un atributo Binary denominado ByteArray con el valor de una matriz de 10 bytes sin inicializar.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("ByteArray", new MessageAttributeValue() .withDataType("Binary") .withBinaryValue(ByteBuffer.wrap(new byte[10])));
String (custom)

En este ejemplo se define el atributo personalizado String.EmployeeId denominado EmployeeId con el valor ABC123456.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("EmployeeId", new MessageAttributeValue() .withDataType("String.EmployeeId") .withStringValue("ABC123456"));
Number (custom)

En este ejemplo se define el atributo personalizado Number.AccountId denominado AccountId con el valor 000123456.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("AccountId", new MessageAttributeValue() .withDataType("Number.AccountId") .withStringValue("000123456"));
nota

Dado que el tipo de datos base es Number, el método ReceiveMessage devuelve 123456.

Binary (custom)

En este ejemplo se define el atributo personalizado Binary.JPEG denominado ApplicationIcon con el valor de una matriz de 10 bytes sin inicializar.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("ApplicationIcon", new MessageAttributeValue() .withDataType("Binary.JPEG") .withBinaryValue(ByteBuffer.wrap(new byte[10])));

Envío de un mensaje con atributos

En este ejemplo se agregan los atributos a SendMessageRequest antes de enviar el mensaje.

// Send a message with an attribute. final SendMessageRequest sendMessageRequest = new SendMessageRequest(); sendMessageRequest.withMessageBody("This is my message text."); sendMessageRequest.withQueueUrl(myQueueUrl); sendMessageRequest.withMessageAttributes(messageAttributes); sqs.sendMessage(sendMessageRequest);
importante

Si envía un mensaje a una cola FIFO (primero en entrar, primero en salir), asegúrese de que el método sendMessage se ejecuta después de proporcionar el ID del grupo de mensajes.

Si utiliza el método SendMessageBatch en lugar de SendMessage, debe especificar los atributos de los mensajes del lote.