Amazon SQS 消息属性
Amazon SQS 使您可以 使用消息属性在消息中包括结构化的元数据 (例如时间戳、地理空间数据、签名和标识符)。。每条消息最多可以包含 10 个属性。消息属性是可选的,并独立于消息正文 (不过会随之一起发送)。使用者可以使用消息属性以特定方式处理消息,而无需先处理消息正文。有关使用 AWS 管理控制台或AWS SDK for Java发送带有属性消息的信息,请参阅将带有属性的消息发送到队列。
消息属性组件
重要
消息属性的所有组件都包括在 256 KB 的消息大小限制中。
Name
、Type
、Value
和消息正文也不应为空或 null。
每个消息属性包含以下组件:
-
Name – 消息属性名称可以包含以下字符:
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
属性可使用 UTF-8 二进制编码的存储 Unicode 文本。有关更多信息,请参阅 ASCII 可打印字符。 -
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 消息摘要计算中包括自定义数据类型后缀。
概览
以下概述了 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 字节) 和值的原始字节。
-