Envoi d'attributs de message à une file d'attente Amazon SQS - Amazon Simple Queue Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Envoi d'attributs de message à une file d'attente Amazon SQS

Vous pouvez inclure des métadonnées structurées (telles que des horodatages, des données géospatiales, des signatures et des identifiants) dans des messages utilisant des attributs de message. Pour plus d’informations, consultez Attributs de message Amazon SQS.

Avant d'exécuter l'exemple de code, assurez-vous d'avoir défini vos AWS informations d'identification. Pour plus d'informations, consultez la section Configurer les AWS informations d'identification et la région pour le développement dans le guide du AWS SDK for Java 2.x développeur.

Définition des attributs

Pour définir un attribut pour un message, ajoutez le code suivant qui utilise le type de données MessageAttributeValue. Pour plus d'informations, consultez Composants des attributs de message et Types de données d'attribut de message.

calcule AWS SDK for Java automatiquement les sommes de contrôle du corps et des attributs du message et les compare aux données renvoyées par Amazon SQS. Pour plus d'informations, consultez le Guide du développeur AWS SDK for Java 2.x et Calcul de la valeur de hachage MD5 pour les attributs de message pour les autres langages de programmation.

String

Cet exemple définit un attribut String nommé Name avec la valeur Jane.

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

Cet exemple définit un attribut Number nommé AccurateWeight avec la valeur 230.000000000000000001.

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

Cet exemple définit un attribut Binary nommé ByteArray avec la valeur d'une matrice de 10 octets non initialisée.

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

Cet exemple définit l'attribut personnalisé String.EmployeeId nommé EmployeeId avec la valeur ABC123456.

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

Cet exemple définit l'attribut personnalisé Number.AccountId nommé AccountId avec la valeur 000123456.

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

Comme le type de données de base est Number, la méthode ReceiveMessage renvoie 123456.

Binary (custom)

Cet exemple définit l'attribut personnalisé Binary.JPEG nommé ApplicationIcon avec la valeur d'une matrice de 10 octets non initialisée.

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

Envoi d'un message avec des attributs

Cet exemple ajoute les attributs à SendMessageRequest avant d'envoyer le message.

// 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);
Important

Si vous envoyez un message à une file d'attente FIFO (First-In First-Out), assurez-vous que la méthode sendMessage s'exécute après que vous avez fourni l'ID de groupe de messages.

Si vous utilisez la méthode SendMessageBatch au lieu de SendMessage, vous devez spécifier les attributs de message pour chaque message du lot.