訊息由下列 3 個部分組成:標頭、特性和內文。您必須瞭解此結構,才能編寫正確的訊息,並且配置特定的訊息傳送運作方式。
每個 JMS 訊息都需要標頭。標頭含有 10 個預先定義的欄位,列出在表 2–3 中加以說明。
表 2–3 JMS 定義的訊息標頭
標頭欄位 |
說明 |
---|---|
指定介於 0 (低) 至 9 (高) 之間的訊息優先權。(預設是由提供者所設定,或由產生器或個別訊息的用戶端明確設定。) |
|
如您在閱讀此表格時所見,訊息標頭欄位具有多種用途:識別訊息、配置訊息路由、提供訊息處理的相關資訊等。
JMSDeliveryMode 是最重要的欄位之一,可決定訊息傳送的可靠性。此欄位可指出訊息是否具有永久性。
某些訊息標頭欄位是由提供者 (代理程式或用戶端執行階段) 設定,某些則是由用戶端設定。訊息產生器必須配置標頭值,才能取得特定的訊息傳送運作方式;而訊息用戶則必須讀取欄位值,才能夠瞭解路由訊息的方式,以及訊息可能需要的進一步處理。
標頭欄位 (JMSDeliveryMode、 JMSExpiration 和 JMSPriority) 可設定為三種不同的層級:
適用於源自連線工廠之每個連線發出的訊息。
適用於產生的各項訊息。
適用於特定訊息產生器發出的各項訊息。
如果這些欄位不只設在一個層級上,則連線工廠的設定值便會置換個別訊息的設定值;特定訊息的設定值則會置換訊息產生器的設定值。
訊息標頭欄位的常數名稱則會隨所用語言而有所不同。如需更多資訊,請參閱「Sun Java System Message Queue 3.7 UR1 Developer’s Guide for Java Clients」或「Sun Java System Message Queue 3.7 UR1 Developer’s Guide for C Clients」。
訊息中也可能含有可選的標頭欄位 (稱為特性),會以特性名稱與特性值成對指定。「特性」可讓用戶端與提供者延伸訊息標頭,並可包含任何有助於用戶端或提供者識別及處理訊息的資訊。訊息特性可讓接收用戶端要求僅傳送符合指定準則的訊息。例如,使用用戶端可指定只需要紐澤西州之兼差員工的薪資訊息。提供者將不會傳送任何不符指定準則的訊息。
JMS 規格定義九種標準特性。這些特性部分是由用戶端設定,部分則是由提供者設定。其名稱會以保留字元「JMSX」為開頭。用戶端或提供者可使用這些特性來判斷訊息的傳送者、訊息狀態,以及傳送訊息的頻率與時間。這些特性對提供者在路由訊息及提供診斷資訊時非常有用。
Message Queue 也可定義訊息特性,以識別壓縮訊息及訊息無法傳送時的處理方式。如需更多資訊,請參閱「Sun Java System Message Queue 3.7 UR1 Developer’s Guide for Java Clients」中的「Managing Message Size」。
訊息內文中含有用戶端所要交換的資料。
JMS 訊息的類型決定內文所要包含的項目,以及用戶應以何種方式進行處理,如表 2–4 所指定。階段作業物件中包含各種訊息內文類型的建立方法。
表 2–4 訊息內文類型
類型 |
說明 |
---|---|
內文包含一連串 Java 原始值串流的訊息。它被依序寫入及讀取。 |
|
內文包含一組「名稱-值」對的訊息。項目的順序未加以定義。 |
|
內文包含 Java 字串的訊息,例如 XML 訊息。 |
|
內文包含串列化 Java 物件的訊息。 |
|
內文包含未解譯位元組串流的訊息。 |
|
包含標頭和特性,但沒有內文的訊息。 |
Java 用戶端可設定特性,讓用戶端執行階段壓縮所要傳送的訊息內文。位於用戶端上的 Message Queue 執行階段可在傳送前解壓縮訊息。