本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon SQS 的訊息中繼資料
使用訊息屬性為您的應用程式將自訂中繼資料新增至 Amazon SQS 訊息。使用訊息系統屬性來存放中繼資料以與其他 整合 AWS 服務,例如 AWS X-Ray。
Amazon SQS 訊息屬性
Amazon SQS 可讓您使用訊息屬性,在訊息中包含結構化中繼資料 (例如時間戳記、地理空間資料、簽章和識別符)。每則訊息最多可以擁有 10 個屬性。訊息屬性為選用且與訊息內文分開 (但與訊息內文一起傳送)。您的消費者可以使用訊息屬性以特定方式處理訊息,而不必先處理訊息內文。如需使用 Amazon SQS 主控台以屬性傳送訊息的資訊,請參閱 使用 Amazon SQS 傳送具有屬性的訊息。
注意
不要將訊息屬性與訊息系統屬性混淆:雖然您可以使用訊息屬性將自訂中繼資料連接至應用程式的 Amazon SQS 訊息,但您可以使用訊息系統屬性來存放其他服務的中繼資料 AWS ,例如 AWS X-Ray。
訊息屬性元件
重要
訊息屬性的所有元件都包含在 1 MiB 訊息大小限制中。
Name
、Type
、Value
和訊息內文不能為空或 null。
每項訊息屬性均是由以下元件組成:
-
名稱 – 訊息屬性名稱可包含以下字元:
A
-Z
、a
-z
、0
-9
、底線 (_
)、連字號 (-
) 和句點 (.
)。將適用以下限制:-
長度上限為 256 個字元
-
開頭不能是
AWS.
或Amazon.
(或任何大小寫變化) -
區分大小寫
-
在訊息的所有屬性名稱中必須是唯一的
-
開頭或結尾不能是句號
-
序列中不能有句號
-
-
類型 – 訊息屬性資料類型。支援的類型包括
String
、Number
和Binary
。您也可以新增任何資料類型的自訂資訊。資料類型具有與訊息內文相同的限制 (如需詳細資訊,請參閱《Amazon Simple Queue Service API 參考SendMessage
》中的 )。此外,適用下列限制:-
長度上限為 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 會移除前置和結尾的零。
-
二進位 – 二進位屬性可儲存任何二進位資料,例如壓縮資料、加密資料或影像。
-
自訂 – 若要建立自訂資料類型,請將自訂類型標籤附加到任何資料類型。例如:
-
Number.byte
、Number.short
、Number.int
和Number.float
可協助區分數字類型。 -
Binary.gif
和Binary.png
可協助區分檔案類型。
注意
Amazon SQS 不會解譯、驗證或使用附加的資料。
自訂類型標籤的限制與訊息內文相同。
-
計算訊息屬性的 MD5 訊息摘要
如果您使用 適用於 Java 的 AWS SDK,則可以略過本節。適用於 Java 的開發套件的 MessageMD5ChecksumHandler
類別支援 Amazon SQS 訊息屬性的 MD5 訊息摘要。
如果您使用查詢 API 或其中一個不支援 Amazon SQS 訊息屬性的 MD5 訊息摘要的 AWS SDKs,您必須使用下列準則來執行 MD5 訊息摘要計算。
注意
在 MD5 訊息摘要計算中一律包含自訂資料類型尾碼。
概觀
以下概述 MD5 訊息摘要計算演算法:
-
以遞增順序根據名稱排列所有訊息屬性。
-
將各屬性 (
Name
、Type
和Value
) 的個別部分編碼至緩衝區。 -
運算整個緩衝區的訊息摘要。
下圖顯示的是單一訊息屬性的 MD5 訊息摘要編碼:

若要對單個 Amazon SQS 訊息屬性進行編碼
-
編碼名稱:長度 (4 個位元組) 和名稱的 UTF-8 位元組。
-
編碼資料類型:長度 (4 個位元組) 和資料類型的 UTF-8 位元組。
-
編碼值的傳輸類型 (
String
或Binary
) (1 個位元組)。注意
String
和Number
的邏輯資料類型使用String
傳輸類型。Binary
邏輯資料類型使用Binary
傳輸類型。-
若為
String
傳輸類型,為編碼 1。 -
若為
Binary
傳輸類型,為編碼 2。
-
-
為屬性值編碼。
-
若為
String
傳輸類型,請編碼屬性值:長度 (4 個位元組) 和值的 UTF-8 位元組。 -
若為
Binary
傳輸類型,請編碼屬性值:長度 (4 個位元組) 和值的原始位元組。
-
Amazon SQS 訊息系統屬性
雖然您可以使用訊息屬性將應用程式的自訂中繼資料連接到 Amazon SQS 訊息,但您仍可以使用訊息系統屬性來存放 AWS X-Ray等其他 AWS
服務的中繼資料。如需詳細資訊,請參閱 SendMessage
和 SendMessageBatch
API 動作的MessageSystemAttribute
請求參數、ReceiveMessage
API 動作的AWSTraceHeader
屬性,以及 Amazon Simple Queue Service API 參考中的MessageSystemAttributeValue
資料類型。
訊息系統屬性的結構與訊息屬性完全相同,但下列屬性除外::
-
目前,唯一支援的訊息系統屬性是
AWSTraceHeader
。其類型必須為 ,String
且其值必須是格式正確的 AWS X-Ray 追蹤標頭字串。 -
訊息系統屬性的大小不會計入訊息的總大小。