Invio degli attributi dei messaggi a una coda Amazon SQS - Amazon Simple Queue Service

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

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.

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 gli AWS SDK for Java 2.x sviluppatori.

Definizione degli attributi

Per definire un attributo per un messaggio, aggiungi il codice seguente che utilizza il tipo di dati MessageAttributeValue. Per ulteriori informazioni, consulta Componenti attributo del messaggio e Tipi di dati degli attributi di messaggio.

Calcola AWS SDK for 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 e Calcolo del digest dei messaggi MD5 per gli attributi di messaggi 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 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

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), fai in modo che il metodo sendMessage venga eseguito dopo aver fornito l'ID gruppo di messaggi.

Se utilizzi l'operazione SendMessageBatch invece di SendMessage, devi specificare gli attributi per ogni singolo messaggio presente nel batch.