翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon SQS キューへのメッセージ属性の送信
メッセージ属性をメッセージに使用すると、構造化メタデータ (タイムスタンプ、地理空間データ、署名、識別子) などを指定することができます。詳細については、「Amazon SQSメッセージ属性」を参照してください。
サンプルコードを実行する前に、 AWS 認証情報が設定されていることを確認してください。詳細については、「 AWS SDK for Java 2.x デベロッパーガイド」の「開発用の AWS 認証情報とリージョンの設定」を参照してください。
属性の定義
メッセージの属性を定義するには、MessageAttributeValue
データタイプを使用する以下のコードを追加します。詳細については、「メッセージ属性コンポーネント」および「メッセージ属性のデータ型」を参照してください。
は、メッセージ本文とメッセージ属性のチェックサム AWS SDK for Java を自動的に計算し、Amazon SQS が返すデータと比較します。詳細については、AWS SDK for Java 2.x デベロッパーガイドを参照してください。他のプログラミング言語については、「メッセージ属性のMD5メッセージダイジェストの計算」を参照してください。
- String
-
この例では、値がString
である、Name
という名前のJane
属性を定義します。
final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();
messageAttributes.put("Name", new MessageAttributeValue()
.withDataType("String")
.withStringValue("Jane"));
- Number
-
この例では、値がNumber
である、AccurateWeight
という名前の230.000000000000000001
属性を定義します。
final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();
messageAttributes.put("AccurateWeight", new MessageAttributeValue()
.withDataType("Number")
.withStringValue("230.000000000000000001"));
- Binary
-
この例では、初期化されていない10バイト配列の値を持つ、Binary
という名前のByteArray
属性を定義します。
final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();
messageAttributes.put("ByteArray", new MessageAttributeValue()
.withDataType("Binary")
.withBinaryValue(ByteBuffer.wrap(new byte[10])));
- String (custom)
-
この例では、値がString.EmployeeId
である、EmployeeId
という名前のカスタム属性ABC123456
を定義します。
final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();
messageAttributes.put("EmployeeId", new MessageAttributeValue()
.withDataType("String.EmployeeId")
.withStringValue("ABC123456"));
- Number (custom)
-
この例では、値がNumber.AccountId
である、AccountId
という名前のカスタム属性000123456
を定義します。
final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();
messageAttributes.put("AccountId", new MessageAttributeValue()
.withDataType("Number.AccountId")
.withStringValue("000123456"));
- Binary (custom)
-
この例では、初期化されていない10バイト配列の値を持つ、Binary.JPEG
という名前のカスタム属性ApplicationIcon
を定義します。
final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>();
messageAttributes.put("ApplicationIcon", new MessageAttributeValue()
.withDataType("Binary.JPEG")
.withBinaryValue(ByteBuffer.wrap(new byte[10])));
属性を含むメッセージの送信
この例では、SendMessageRequest
メッセージを送信する前に属性を追加します。
// 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);
First-In-First-Out(FIFO)キューにメッセージを送信する場合は、メッセージグループIDを提供したsendMessage
後で、 メソッドが実行されることを確認します。
SendMessage
の代わりにSendMessageBatch
を使用する場合は、バッチの各メッセージに対してメッセージ属性を指定する必要があります。