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