

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Enviar atributos de mensagem para uma fila do Amazon SQS
<a name="sqs-java-send-message-with-attributes"></a>

É possível incluir metadados estruturados (como carimbos de data e hora, dados geoespaciais, assinaturas e identificadores) com mensagens usando os *atributos de mensagem*. Para obter mais informações, consulte [Atributos de mensagem do Amazon SQS](sqs-message-metadata.md#sqs-message-attributes).

 Antes de executar o código de exemplo, verifique se você definiu suas AWS credenciais. Para obter mais informações, consulte [Configurar AWS credenciais e região para desenvolvimento](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html#setup-credentials) no *Guia do AWS SDK for Java 2.x desenvolvedor*. 

## Definir atributos
<a name="sqs-java-define-attributes"></a>

Para definir um atributo para uma mensagem, adicione o código a seguir que usa o tipo de dado `[MessageAttributeValue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_MessageAttributeValue.html)`. Para obter mais informações, consulte [Componentes de atributos de mensagem](sqs-message-metadata.md#message-attribute-components) e [Tipos de dados de atributos de mensagem](sqs-message-metadata.md#message-attribute-data-types).

O calcula AWS SDK para Java automaticamente as somas de verificação do corpo da mensagem e do atributo da mensagem e as compara com os dados que o Amazon SQS retorna. Para obter mais informações, consulte o *[Guia do desenvolvedor do AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/)* e [Calculando o resumo da MD5 mensagem para os atributos da mensagem](sqs-message-metadata.md#sqs-attributes-md5-message-digest-calculation) para outras linguagens de programação.

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

Este exemplo define um atributo `String` chamado `Name` com o valor `Jane`.

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

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

Este exemplo define um atributo `Number` chamado `AccurateWeight` com o valor `230.000000000000000001`.

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

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

Este exemplo define um atributo `Binary` chamado `ByteArray` com o valor de uma matriz de 10 bytes não inicializada.

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

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

Este exemplo define o atributo personalizado `String.EmployeeId` chamado `EmployeeId` com o valor `ABC123456`.

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

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

Este exemplo define o atributo personalizado `Number.AccountId` chamado `AccountId` com o valor `000123456`.

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

**nota**  
Como o tipo de dados base é `Number`, o método `[ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)` retorna `123456`.

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

Este exemplo define um atributo personalizado `Binary.JPEG` chamado `ApplicationIcon` com o valor de uma matriz de 10 bytes não inicializada.

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

------

## Enviar uma mensagem com atributos
<a name="sqs-java-send-attributes"></a>

Este exemplo adiciona os atributos à `SendMessageRequest` antes de enviar a mensagem.

```
// 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 você enviar uma mensagem para uma fila First-In-First-Out (FIFO), verifique se o `sendMessage` método é executado *depois* de fornecer a ID do grupo de mensagens.  
Se usar o método `[SendMessageBatch](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessageBatch.html)` em vez de `[SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)`, você deverá especificar os atributos da mensagem de cada mensagem no lote.