

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
<a name="sqs-java-send-message-with-attributes"></a>

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 de plus amples informations, veuillez consulter [Attributs de message Amazon SQS](sqs-message-metadata.md#sqs-message-attributes).

 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](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html#setup-credentials) dans le *guide du AWS SDK for Java 2.x développeur*. 

## Définition des attributs
<a name="sqs-java-define-attributes"></a>

Pour définir un attribut pour un message, ajoutez le code suivant qui utilise le type de données `[MessageAttributeValue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_MessageAttributeValue.html)`. Pour plus d'informations, consultez [Composants des attributs de message](sqs-message-metadata.md#message-attribute-components) et [Types de données d'attribut de message](sqs-message-metadata.md#message-attribute-data-types).

calcule AWS SDK pour 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](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/)* et [Calcul du résumé du MD5 message pour les attributs du message](sqs-message-metadata.md#sqs-attributes-md5-message-digest-calculation) 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](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)` 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
<a name="sqs-java-send-attributes"></a>

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 First-In-First-Out (FIFO), assurez-vous que la `sendMessage` méthode s'exécute une *fois* que vous avez fourni l'ID du groupe de messages.  
Si vous utilisez la méthode `[SendMessageBatch](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessageBatch.html)` au lieu de `[SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)`, vous devez spécifier les attributs de message pour chaque message du lot.