Sun Java System Message Queue 為全方位功能的訊息服務,可提供符合 Java Messaging Specification (JMS) 1.1 規格且可靠的非同步訊息傳送。此外,Message Queue 還提供多種 JMS 規格以外的功能,以滿足大型企業的使用需求。
Message Queue 3.7 UR1 是 Message Queue 3.6 的維護版本,包含錯誤修正與一些略微增強的功能。本節包含下列資訊:
Message Queue 3.7 UR1 包含下列新增功能:
這些資訊都會在下列小節中詳述。
為簡化產品提供,我們合併了 Sun Java Message Queue 的 Platform Edition 與 Enterprise Edition。從 Message Queue 3.7 UR1 開始將只有一個版本,如此可有效取消獨立發行軟體的功能限制。希望此舉能簡化本產品的使用。
合併版本也可以使 Message Queue 與 Solaris Enterprise System 更加一致,使您能長期使用 Enterprise Edition 功能,而無需支援、維護或補充功能。與之前的發行版本相同,我們將繼續提供支援與維護服務的多項授權方案。Java Enterprise System 與 Application Platform Suite 會繼續隨附 Message Queue。請查看位於 http://www.sun.com 的線上商店或洽詢當地銷售代表,以選擇最適合您需求的方案。下表說明升級至新的 Message Queue 單一版本的路徑。
表 1–2 Message Queue 3.7 UR1 的升級路徑
先前的版本 |
升級路徑 |
說明 |
---|---|---|
Platform Edition |
Sun Java System Message Queue 3.7 UR1 |
現在 3.7 UR1 客戶可以使用所有的功能 (Platform 和 Enterprise)。購買授權即可使用支援方案。 |
Enterprise Edition |
Sun Java System Message Queue 3.7 UR1 |
功能未變更。提供多種授權與支援方案。 |
Platform Edition 支援合約 |
升級為 Enterprise Edition 支援合約 |
先前的 Platform Edition 發行版本的現有支援合約可繼續續約。Sun 不會為先前的 Platform Edition 發行版本核發新的 Platform Edition 合約。 |
Enterprise Edition 支援合約 |
無變更 |
現有合約可繼續續約。會核發新的合約。 |
下表說明各項 Message Queue 產品的提供來源變更。
表 1–3 Message Queue 產品的提供來源變更
產品 |
先前的提供來源 |
新的提供來源 |
說明 |
Open Message Queue |
不適用 |
Sun 下載中心的產品頁面 |
獨立下載。僅支援社群。無支援合約。 |
Message Queue Platform Edition |
透過 Sun 下載中心的 Message Queue 產品頁面 |
不再提供 |
現在僅提供合併 Platform 和 Enterprise 功能的 Message Queue 單一版本。 |
Message Queue Enterprise Edition 試用版 (透過 Platform Edition) |
透過 Sun 下載中心的 Message Queue 產品頁面 |
目前不再需要試用授權 |
不再需要 |
Message Queue Enterprise Edition 90 天試用版 (透過 Java Enterprise System 下載或 CD) |
版本 3 GA (2006 年 3 月) 之前的 Java Enterprise System 下載中心 |
Solaris Enterprise System 下載中心 |
Solaris Enterprise System 授權。有產品授權即可使用支援方案。(不再需要 90 天試用授權。) |
透過 SunStore、CD、獨立授權、Java Enterprise System 授權、Suite 授權,以及由 Java Enterprise System 所提供的 Message Queue Enterprise Edition |
Java Enterprise System 或 Suite 下載中心、媒體 |
Solaris Enterprise System 或 Suite 下載中心、媒體提供 |
無變更。 |
新的函數:MQGetDestinationName()
MQGetDestinationName (const MQDestinationHandle destinationHandle, MQString * destinationName); |
使用此函數取得目標的名稱。傳回的 destinationName 是一個副本,它由呼叫者負責透過呼叫 MQFreeString() 函數進行釋放作業。
參數
您希望知道其名稱之目標的控點。
名稱的輸出參數。
此函數在使用回覆傳送模式時很有用。您可以使用 MQGetMessageReplyTo 函數取得目標 (訊息傳送的目標) 的控點。然後可使用 MQGetDestinationName 取得該目標的名稱。取得目標名稱之後,您可以根據該名稱處理訊息。
新的列舉值:MQ_MESSAGE
新的 MQMessageType (MQ_MESSAGE) 可讓 C 用戶端與其他 Message Queue 用戶端 (C 與 Java) 交換 Message 類型的 JMS 訊息:
typedef enum _MQMessageType {MQ_TEXT_MESSAGE = 0, MQ_BYTES_MESSAGE = 1, MQ_MESSAGE = 3, MQ_UNSUPPORTED_MESSAGE = 2} MQMessageType; |
MQ_MESSAGE 類型可識別具有標頭與特性但沒有訊息內文的訊息。您可使用 MQCreateMessage() 函數建立此類型的訊息。
新連線特性 (MQ_UPDATE_RELEASE_PROPERTY) 指定 Message Queue 已安裝版本的更新發行版本。可使用 MQGetMetaData() 函數取得版本資訊。
為了改善效能,已對 Message Queue 的永久性存放區格式做了兩項變更。其中一項變更是針對檔案存放區,另一項是針對 JDBC 存放區。
檔案存放區中的作業事件資訊
Message Queue 檔案式永久性存放區所儲存的作業事件狀態資訊,其格式已經變更,以降低磁碟 I/O 並改善 JMS 作業事件的效能。
Oracle JDBC 存放區
在之前的 Message Queue 版本中,搭配 Oracle 的存放區模式使用 LONG RAW 資料類型來儲存訊息資料。在 Oracle 8 中,Oracle 引入了 BLOB 資料類型,並停用了 LONG RAW 類型。Message Queue 3.7 UR1 改用 BLOB 資料類型以改善效能與支援能力。
由於這些變更會影響存放區的相容性,因此存放區版本已從 350 變更為 370。Message Queue 3.7 UR1 支援將永久性存放區 (JDBC 存放區與檔案式存放區) 從舊的 200 與 350 版本自動轉換為 370 版本。初次啟動 imqbrokerd 時,如果公用程式偵測到舊版存放區,則會將該存放區遷移至新的格式,同時保留舊版存放區。
如果需要回復此升級動作,請解除安裝 Message Queue 3.7 UR1,然後重新安裝之前執行的版本。由於舊版的存放區副本保留不變,因此代理程式可利用舊版的存放區副本執行。
「Sun Java Enterprise System Installation Guide」中提供了 Message Queue 的硬體與軟體需求。
區域是一種 Solaris 容器技術,可在機器上提供獨立的環境,並以邏輯方式將應用程式彼此隔離。區域可讓您在 Solaris 作業系統實例內建立虛擬作業系統環境。透過在不同區域執行應用程式,可讓您在同一機器上執行相同應用程式的不同實例或不同版本,同時可以集中管理並有效共用資源。
本節提供區域的簡短說明,並說明如何搭配 Message Queue 3.7 UR1 使用。
區域環境包含一個全域區域以及一個或多個非全域區域。初次在系統上安裝 Solaris 10 時,只有一個全域區域。管理員可以建立其他非全域區域,當作全域區域的子區域。每個區域看起來就像執行 Solaris 的獨立系統。每個區域有其各自的 IP 位址、系統配置、執行應用程式的實例,以及各自在檔案系統上的區域。
全域區域包含可在非全域區域之間共用的資源,讓您集中某些管理功能。例如,安裝在全域區域中的套裝軟體可用於 (傳播至) 全部的非全域區域。如此可讓您集中進行安裝、升級以及解除安裝等生命週期管理。同時,非全域區域所提供的隔離功能具備更佳的安全性,並可讓同一機器上執行的相同應用程式,具有配置各異的實例或不同版本。
非全域區域可以是完整的根區域或稀疏根區域:要選擇何者做為應用程式的環境取決於您要用什麼方式透過資源最佳化來平衡管理控制。
完整根區域包含全域區域中檔案系統的讀/寫副本。安裝在全域區域中的套裝軟體會自動複製 (連帶其登錄資訊) 到完整根區域。如此可將管理控制發揮到極致,但代價是會損耗資源。
稀疏根區域包含全域區域中部分檔案系統的讀/寫副本;其他檔案系統會掛載為唯讀的檔案系統。透過唯讀檔案系統以及透過登錄資訊的自動同步化程序,稀疏根區域就可使用安裝在全域區域中的套裝軟體。稀疏根區域能夠最佳化資源的共用,但集中管理的效能會相對變弱。
構成 Java Enterprise System 的元件相依於某些共用元件,造成使用區域時會有一些限制。在區域環境中,共用元件的規則如下。
區域內的所有共用元件必須是相同 JES 版本。此需求會導致三種結果。
若想安裝共用元件的不同版本,則每個版本皆必須位於獨立的區域。
在區域內,若升級了共用元件或安裝了新版本,則必須升級所有共用元件。
當您在全域區域中安裝共用元件時,必須視需要升級非全域區域中的共用元件。
由於檔案系統在稀疏根區域中是唯讀的,所以無法將共用元件安裝在稀疏根區域中,必須將其安裝在全域區域中。相依於共用元件的產品元件必須先安裝在全域區域中,然後再傳播到非全域區域中。
由於 Message Queue 是 Java Enterprise System 元件產品,因此上述需求會影響其安裝,進而限制其使用區域的方式。
Message Queue 產品安裝於 /usr 目錄中,因而必須先在全域區域中進行安裝或升級。
將 Message Queue 安裝在全域區域中時,設定其傳播到所有的非全域區域中。在全域區域中安裝 Message Queue 之後,會在所有區域中安裝相同版本的 Message Queue:若登入任何區域並執行指令 pkginfo -l SUNWiqu,會看到已安裝 Message Queue,所安裝的版本與全域區域中的版本相同。接著,您可以在每個區域執行獨立的 Message Queue 代理程式實例,因為區域並不會共用 /var 與 /etc 目錄中的實例與配置資料。(若其他大多數 Java Enterprise System 元件均安裝在全域區域中,則將不會傳播這些元件。)
因為 Message Queue 會傳播到非全域區域,因此全域實例會永久連結到非全域區域中的安裝。因此不論什麼時候在全域區域中解除安裝或升級 Message Queue,均會影響非全域區域中執行的實例。下列範例顯示這樣做會如何導致意外結果。
在全域區域中安裝 Message Queue 3.7 UR1。這將導致 Message Queue 3.7 UR1 套裝軟體也會安裝到所有非全域區域中。
在完整根區域中解除安裝 Message Queue 3.7 UR1。然後在完整根區域中安裝 Message Queue 3.6。
這樣就會在不同區域中執行不同版本的 Message Queue,此設定對您而言可能很有用。
在全域區域中解除安裝 Message Queue 3.7 UR1。此舉會解除安裝所有其他區域中的 Message Queue,包含完整根區域中的 Message Queue 3.6 實例。
請注意在全域區域中安裝或解除安裝 Message Queue 的串聯效果。
下列兩則使用案例說明如何在不同區域內安裝 Message Queue 的不同實例與不同版本。
若要在 Solaris 10、Solaris 10U1 或 Solaris 10U2 的完整根區域中安裝 Message Queue,您必須先在全域區域中升級 Lockhart。如需額外資訊,請參閱錯誤 645030 的解決方法。
在全域區域中安裝所需的 Message Queue 版本。
這些版本將傳播至所有現有的非全域區域。若您建立額外的非全域區域,Message Queue 也會傳播至這些區域。(您可以在完整根區域以及稀疏根區域中安裝不同的實例,但使用稀疏根區域可讓您利用磁碟空間與其他資源時更有效率)。
若要讓 Message Queue 傳播至其他的非全域區域,請立即建立這些區域。
在每個非全域區域中執行 Message Queue 的實例。