

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à.

# Invio degli attributi dei messaggi a una coda Amazon SQS
<a name="sqs-java-send-message-with-attributes"></a>

Puoi includere metadati strutturati (come time stamp, dati geospaziali, firme e identificatori) con i messaggi tramite gli *attributi dei messaggi*. Per ulteriori informazioni, consulta [Attributi messaggio di Amazon SQS](sqs-message-metadata.md#sqs-message-attributes).

 Prima di eseguire il codice di esempio, assicurati di aver impostato le AWS credenziali. Per ulteriori informazioni, consulta [Configurare AWS le credenziali e la regione per lo sviluppo nella Guida per](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html#setup-credentials) gli *AWS SDK for Java 2.x sviluppatori*. 

## Definizione degli attributi
<a name="sqs-java-define-attributes"></a>

Per definire un attributo per un messaggio, aggiungi il codice seguente che utilizza il tipo di dati `[MessageAttributeValue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_MessageAttributeValue.html)`. Per ulteriori informazioni, consultare [Componenti attributo del messaggio](sqs-message-metadata.md#message-attribute-components) e [Tipi di dati degli attributi di messaggio](sqs-message-metadata.md#message-attribute-data-types).

Calcola AWS SDK per Java automaticamente i checksum del corpo del messaggio e degli attributi del messaggio e li confronta con i dati restituiti da Amazon SQS. Per ulteriori informazioni, consulta la *[Guida per gli sviluppatori AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/)* e [Calcolo del digest dei MD5 messaggi per gli attributi dei messaggi](sqs-message-metadata.md#sqs-attributes-md5-message-digest-calculation) per altri linguaggi di programmazione.

------
#### [ String ]

Questo esempio definisce un attributo `String` denominato `Name` con il valore `Jane`.

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

------
#### [ Number ]

Questo esempio definisce un attributo `Number` denominato `AccurateWeight` con il valore `230.000000000000000001`.

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

------
#### [ Binary ]

Questo esempio definisce un attributo `Binary` denominato `ByteArray` con il valore di un array non inizializzato di 10 byte.

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

------
#### [ String (custom) ]

Questo esempio definisce l'attributo personalizzato `String.EmployeeId` denominato `EmployeeId` con il valore `ABC123456`.

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

------
#### [ Number (custom) ]

Questo esempio definisce l'attributo personalizzato `Number.AccountId` denominato `AccountId` con il valore `000123456`.

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

**Nota**  
Poiché il tipo di dati di base è `Number`, il metodo `[ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)` restituisce `123456`.

------
#### [ Binary (custom) ]

Questo esempio definisce l'attributo personalizzato `Binary.JPEG` denominato `ApplicationIcon` con il valore di un array non inizializzato di 10 byte.

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

------

## Invio di un messaggio con attributi
<a name="sqs-java-send-attributes"></a>

Questo esempio aggiunge gli attributi a `SendMessageRequest` prima dell'invio del messaggio.

```
// 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**  
Se invii un messaggio a una coda First-In-First-Out (FIFO), assicurati che il `sendMessage` metodo venga eseguito *dopo aver* fornito l'ID del gruppo di messaggi.  
Se utilizzi l'operazione `[SendMessageBatch](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessageBatch.html)` invece di `[SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)`, devi specificare gli attributi per ogni singolo messaggio presente nel batch.