本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
消息元数据
您可以使用消息属性将自定义元数据附加到应用程序的 Amazon SQS 消息。您可以使用消息系统属性来存储其他 AWS 服务(如 AWS X-Ray)的元数据。
Amazon SQS 消息属性
Amazon SQS 使您可以 使用消息属性在消息中包括结构化的元数据 (例如时间戳、地理空间数据、签名和标识符)。。每条消息最多可以包含 10 个属性。消息属性是可选的,并独立于消息正文 (不过会随之一起发送)。使用者可以使用消息属性以特定方式处理消息,而无需先处理消息正文。有关使用发送含属性的消息的信息 Amazon SQS 控制台,请参阅 发送含属性的消息(控制台).
不要将消息属性与 邮件系统属性: 然而,您可以使用消息属性将自定义元数据附加到 Amazon SQS 消息,您可以使用 邮件系统属性 存储其他 AWS 服务,例如 AWS X-Ray.
消息属性组件
消息属性的所有组件都包括在 256 KB 的消息大小限制中。
Name
、Type
、Value
和消息正文也不应为空或 null。
每个消息属性包含以下组件:
-
姓名 – 邮件属性名称可包含下列字符:
A
-Z
,a
-z
,0
-9
,下划线(_
)、连字符(-
)、和周期(.
)。以下限制适用:-
最长可为 256 个字符
-
不能以
AWS.
或Amazon.
(或任意大小写变化形式) 开头 -
区分大小写
-
必须在消息的所有属性名中唯一
-
不能以句点开头或结尾
-
序列中不能有句点
-
-
Type – 消息属性数据类型。支持的类型包括
String
,Number
、和Binary
。您还可以为任何数据类型添加自定义信息。数据类型与消息正文具有相同的限制(有关更多信息,请参阅 Amazon Simple Queue Service API Reference中的SendMessage
)。此外,以下限制将适用:-
最长可为 256 个字符
-
区分大小写
-
-
Value – 消息属性值。对于
String
数据类型,属性值具有与消息正文相同的限制。
消息属性数据类型
消息属性数据类型指示 Amazon SQS 如何处理对应的消息属性值。例如,如果类型为 Number
,Amazon SQS 验证数字值。
Amazon SQS 支持使用
格式的可选自定义数据类型标签的逻辑数据类型 .custom-data-type
String
、Number
和 Binary
。
-
String –
String
属性可以存储使用任意有效 XML 字符的 Unicode 文本。 -
Number –
Number
属性可以存储正数或负数数值。数字最多可精确到 38 位,并且介于 10^-128 和 10^+126 之间。注意 Amazon SQS 删除开头和结尾的零。
-
Binary – Binary 属性可以存储任何二进制数据,例如压缩数据、加密数据或图像。
-
Custom – 要创建自定义数据类型,请将 custom-type 标签附加到任意数据类型。例如:。
-
Number.byte
、Number.short
、Number.int
和Number.float
可帮助区分各种数字类型。 -
Binary.gif
和Binary.png
可帮助区分文件类型。
注意 Amazon SQS 不解释、验证或使用附加数据。
custom-type 标签与消息正文具有相同的限制。
-
计算消息属性的 MD5 消息摘要
如果使用AWS SDK for Java,可以跳过本节。适用于 Java 的开发工具包的 MessageMD5ChecksumHandler
类支持 Amazon SQS 消息属性的 MD5 消息摘要。
如果使用查询 API 或不支持 Amazon SQS 消息属性的 MD5 消息摘要的 AWS 开发工具包之一,则必须使用以下指南来执行 MD5 消息摘要计算。
请始终在 MD5 消息摘要计算中包括自定义数据类型后缀。
Overview
以下概述了 MD5 消息摘要计算算法:
-
按名称的升序对所有消息属性进行排序。
-
将每个属性的各个部分 (
Name
、Type
和Value
) 进行编码并存入缓冲区。 -
计算整个缓冲区的消息摘要。
下图演示单个消息属性的 MD5 消息摘要的编码:

对单个 Amazon SQS 消息属性编码
-
对名称编码:长度 (4 字节) 和名称的 UTF-8 字节。
-
对数据类型编码:长度 (4 字节) 和数据类型的 UTF-8 字节。
-
对值 (1 个字节) 的传输类型 (
String
或Binary
) 编码。注意 逻辑数据类型
String
和Number
使用String
传输类型。逻辑数据类型
Binary
使用Binary
传输类型。-
对于
String
传输类型,编码为 1。 -
对于
Binary
传输类型,编码为 2。
-
-
对属性值编码。
-
对于
String
传输类型,对属性值编码:长度 (4 字节) 和值的 UTF-8 字节。 -
对于
Binary
传输类型,对属性值编码:值的长度(4 字节)和原始字节。
-
Amazon SQS 消息系统属性
而您可以使用 消息属性 将自定义元数据附加到 Amazon SQS 消息,您可以使用 邮件系统属性 存储其他 AWS 服务,例如 AWS X-Ray. 有关更多信息,请参阅 SendMessage
和 SendMessageBatch
API 操作的MessageSystemAttribute
请求参数、ReceiveMessage
API 操作的 AWSTraceHeader
属性,以及 Amazon Simple Queue Service API Reference 中的 MessageSystemAttributeValue
数据类型。
消息系统属性的结构与消息属性完全一样,除了以下例外:
-
目前唯一支持的报文系统属性为
AWSTraceHeader
。它的类型必须是String
并且其值必须正确格式化 AWS X-Ray 跟踪标题字符串。 -
消息系统属性的大小不会计入消息的总大小。