Sun ONE Message Queue 3.0.1 SP2 版次注意事項 |
Sun ONE Message Queue 版次注意事項
版本 3.0.1 SP2
文件編號 817-3830-10
2003 年 8 月
這些版次注意事項包含了 Sun Open Net Environment (Sun ONE) Message Queue (MQ) 版本 3.0.1 Service Pack 2 (SP2) 發行時提供的重要資訊。新功能和增強功能、已知的限制和問題、技術說明及其他資訊均在此處說明。請先閱讀本文件,再開始使用 MQ 3.0.1 SP2。
這些版次注意事項的最新版本位於 Sun ONE 說明文件網站:http://docs.sun.com/?p=/coll/S1_MessageQueue_301 上。請在安裝和設定軟體之前先查看此網站,並在以後定期檢視最新的版次注意事項和手冊。
這些版次注意事項包含以下小節︰
修訂歷程
表 1 修訂歷程
日期
變更說明
2003 年 8 月
對本文件所作的變更如下:
- 對文件的結構和版本編號的說明進行了輕微變更。
- 新增了新的小節 Message Queue 3.0.1 SP2 的新功能。
- 已將錯誤 4879448、4883126、4888270 和 4883126 新增至已知的錯誤。
- 已將錯誤 4683129、4735757、4758424、4758427、4770212、4770518、4809079、4821708、4828860、4835586 和 4879448 新增至已在 Message Queue 3.0.1 版中修正的錯誤。
2002 年 10 月
首次發行本文件。
Java Message Service (JMS) 相容MQ 3.0.1 版本經驗證與 Java Message Service (JMS) 1.1 規格相容:它已通過 JMS 1.1 Compatibility Test Suite (CTS)。
MQ 3.0.1 (Sun ONE Application Server 7 的原生 JMS 提供者) 還通過了 Sun ONE Application Server 7 的 J2EE 1.3.1 CTS 測試 (該測試要求與 JMS 1.0.2b 相容)。
Message Queue 3.0.1 SP2 的新功能MQ 3.0.1 SP2 是 MQ 3.0.1 SP1 (錯誤修復版次,無新功能) 的更新版本。MQ 3.0.1 SP1 是 MQ 3.0.1 的更新版本。在這些版次注意事項中,3.0.1 版本的參考一般分別指 3.0.1、3.0.1 SP1 和 3.0.1 SP2。
MQ 3.0.1 SP2 產品包含 MQ 3.0 和 3.0.1 的所有新功能,以及另外兩個 3.0.1 SP2 功能。
Message Queue 3.0.1 SP2 的新功能
與 MQ 3.0.1 相比,MQ 3.0.1 SP2 包含兩個新功能:
Message Queue 3.0.1 的新功能
與 MQ 3.0 相比,MQ 3.0.1 包含兩個新功能:
Message Queue 3.0 的新功能
MQ 3.0 包含對 2.0 版產品 — iMQ 2.0 (與 iMQ 2.0, Service Pack 1) 的一些變更。
這些變更中最重要的是產品目前提供兩個版本:平台版和企業版。
平台版 提供基本的 JMS 支援,最適用於小規模的佈署和開發環境。
企業版 提供 HTTP/HTTPS 支援、增強的延展性以及安全性功能,最適用於大規模的佈署。
(請參閱「MQ 管理員指南」或「MQ 開發人員指南」的介紹,以獲得有關這些版本的更多資訊。)
MQ 3.0 產品的以下變更說明根據它們是適用於這兩個版本還是僅適用於企業版來進行群組。
適用於企業版和平台版
目前,MQ 支援 JMS 1.1 規格的新增功能,與 JMS 1.0.2 相比,它可提供一種簡化的方法以進行 JMS 用戶端程式設計。特別是,JMS 用戶端可透過同一連線並在同一階段作業中執行點對點訊息傳送和出版/訂閱訊息傳送,並可在同一異動中包含佇列和主題。
總之,JMS 用戶端開發人員無需在 JMS 1.0.2 的單獨點對點程式設計領域和出版/訂閱程式設計領域中進行選擇,而可以選擇更為簡單統一的 JMS 1.1 領域方法。這是通常所採用的方法,但 JMS 1.1 規格會繼續支援單獨的 JMS 1.0.2 程式設計領域。(實際上,MQ 產品包含的範例應用程式以及「MQ 開發人員指南」中提供的程式碼範例均使用單獨的 JMS 1.0.2 程式設計領域。)
僅適用於企業版
Message Queue 說明文件更新以下 MQ 3.0.1 和 MQ 3.0.1 SP2 文件已從產品的 3.0 版本更新。這些已更新的文件位於 Sun ONE 說明文件網站:http://docs.sun.com/coll/S1_MessageQueue_301 上。
安裝指南
「MQ 安裝指南」已更新,其中包含 MQ 3.0.1 SP2 中的變更 (請參閱 Message Queue 3.0.1 SP2 的新功能)。
管理員指南
「MQ 管理員指南」已更新,其中包含 MQ 3.0.1 中的新功能 (請參閱 Message Queue 3.0.1 的新功能)。
開發人員指南
「MQ 開發人員指南」已更新,其中包含 MQ 3.0.1 中的新功能 (請參閱 Message Queue 3.0.1 的新功能)。
相容性問題MQ 3.0.1 版本與 MQ 3.0 完全相容,並且從 MQ 3.0 升級至 MQ 3.0.1 無需變更代理程式配置、受管理物件、管理工具或用戶端應用程式。
但是,MQ 3.0.1 版本 (本節中,以下僅稱為 3.0.1) 通常與 iMQ 2.0 不相容。特別是從 iMQ 2.0 (或 iMQ 2.0 Service Pack 1) 升級至 MQ 3.0.1 時,您可能需要處理一些問題:
代理程式相容性
由於代理程式特性和永久性儲存區綱目的變更,MQ 3.0.1 代理程式將無法與 iMQ 2.0 代理程式互通。但是,某些 iMQ 2.0 資料與 MQ 3.0.1 相容 (如表 2 中所示),並且在升級至 MQ 3.0.1 時可被保留。從 iMQ 2.0 升級至 MQ 3.0.1 時,您應考量以下內容:
- 您可以將 iMQ 2.0 config.properties 檔案複製到其他位置,並且在大多數情況下,您可在配置 MQ 3.0.1 代理程式時查閱這些檔案包含的特性設定。
- 任何永久性 iMQ 2.0 資料 — 訊息、目標和持久訂閱 — 均不能重新使用。特別是,您將需要在 MQ 3.0.1 代理程式中重建 iMQ 2.0 目標。
- 您可以在安裝 MQ 3.0.1 之後繼續使用 iMQ 2.0 使用者儲存庫和存取控制特性檔案。MQ 3.0.1 安裝程式不會覆寫這些檔案。但是,您必須將它們移至適當的 MQ 3.0.1 位置 (請參閱「MQ 管理員指南」的附錄 D)。
受管理物件相容性
MQ 3.0.1 受管理物件已使用新屬性增強,並且 iMQ 2.0 屬性已重新命名。因此,從 iMQ 2.0 升級至 MQ 3.0.1 時,您應考量以下內容:
- 您可以使用在 iMQ 2.0 中建立的相同的物件儲存區和受管理物件﹔但是,最好在安裝 MQ 3.0.1 之後升級您的受管理物件。執行升級作業時,管理主控台 (imqadmin) 和 ObjectManager 指令行公用程式 (imqobjmgr) 會將 iMQ 2.0 受管理物件轉換為 MQ 3.0.1 受管理物件。
- MQ 3.0.1 用戶端運行時間透過將 iMQ 2.0 受管理物件轉換為本機 MQ 3.0.1 受管理物件,來查找和創設 iMQ 2.0 受管理物件,但這不會將物件儲存區中的 iMQ 2.0 受管理物件轉換為 MQ 3.0.1 受管理物件。
- 直接創設受管理物件的 JMS 用戶端 (應用程式和/或元件) — 即它們是 JMS 提供者相依的 — 需要重新寫入,以使用新的受管理物件屬性名稱 (請參閱「MQ 開發人員指南」第 4 章和附錄 A,以取得有關受管理物件屬性的資訊)。
- 啟動 JMS 用戶端並使用指令行選項設定受管理物件屬性值的程序檔需要重新寫入,以使用新的受管理物件屬性名稱 (請參閱「MQ 開發人員指南」的第 4 章和附錄 A,以取得有關受管理物件屬性的資訊)。
管理工具相容性
由於重新命名了許多檔案和目錄 (特別是以字串「imq」取代「jmq」),所有的 MQ 3.0.1 指令行公用程式、代理程式特性、受管理物件屬性以及內部檔案名稱均已變更。因此,從 iMQ 2.0 升級至 MQ 3.0.1 時,您應考量以下事項:
- 您需要編輯使用指令行公用程式 (imqbrokerd、imqcmd 和 imqobjmgr 等) 的所有程序檔,以使用新命名的指令取代舊指令。特別需要注意的是,jmqbroker 指令目前為 imqbrokerd。
- 管理主控台 (imqadmin) 可讓您同時管理數個代理程式和/或物件儲存區,並儲存螢幕左側導航窗格中顯示的受管理實體清單。這樣,您每次啟動主控台時,受管理實體清單便會重新顯示。儲存 iMQ 2.0 管理主控台的使用者設定之目錄名稱已針對 MQ 3.0.1 進行變更。如果您希望在從 iMQ 2.0 升級至 MQ 3.0.1 時保留舊的主控台設定,則需要將儲存 brokerlist.properties 檔案和 objstorelist.properties 檔案的目錄名稱從 $HOME/.jmq/admin 變更為 $HOME/.imq/admin,其中 $HOME 為主控台使用者的主目錄。
用戶端相容性
從 iMQ 2.0 升級至 MQ 3.0.1 時,您應考量以下內容:
- MQ 3.0.1 代理程式將支援 iMQ 2.0 用戶端運行時間 (但是沒有其他 MQ 3.0.1 功能),而 iMQ 2.0 代理程式則不支援 MQ 3.0.1 用戶端運行時間。
- 建立在 JDK 1.2、1.3 或 1.4 上的 JMS 用戶端可與執行 JRE 1.4 的代理程式互通。但是,如果使用安全 (基於 SSL) 連線與代理程式相連的用戶端不是建立在 JDK 1.4 (其中包括 JSSE 和 JNDI 程式庫) 上,則將需要附加的 JSSE 和 JNDI 程式庫。
- JMS 1.1 API (受 MQ 3.0.1 支援) 將說明 Message.acknowledge() 方法的運作方式,此方法用於在 CLIENT_ACKNOWLEDGE 階段作業中回應訊息使用。這可能需要您修改現有 JMS 用戶端。
已知的限制此小節中所示的限制根據它們是適用於 MQ 3.0.1 版本的企業版及平台版,還是僅適用於企業版來進行群組。
適用於企業版和平台版
- 根據儲存區容量的最大值,Windows 平台會設定可經由 TCP/IP 同時啟動的代理程式連線數目的限制。儲存區是 TCP 堆疊中連線的緩衝區 — 同時啟動的 TCP 連線數目不能超出儲存區容量。例如,Windows 2000 Professional 將儲存區限制為 5,Windows 2000 Server 將儲存區限制為 200。
- 您必須至少啟動一次代理程式實例,才能編輯代理程式的實例配置檔案。這是因為只有先啟動代理程式實例,config.properties 檔案才存在。若要配置代理程式以使用可插接式持續性或設定其他配置特性,請執行一次代理程式 (帶有用於建立代理程式的實例名稱) 以建立 config.properties 檔案:
僅適用於企業版
- 代理程式的共用執行緒儲存區模型不能在 Windows 平台上使用 (由於 J2SE 1.4.0 中的錯誤)。該錯誤預計在 J2SE 1.4.1 中修正,但尚未測試。
- 此版本僅支援完全連線的代理程式叢集。這意味著,叢集中的每個代理程式必須與叢集中的每個其他代理程式直接通訊。如果您要使用 imqbrokerd -cluster 指令行引數連線代理程式,請務必小心以確保包含叢集中的所有代理程式。
- 如果未在代理程式叢集中使用主代理程式,則新增至叢集的代理程式儲存的永久性資訊不會傳遞至叢集中的其他代理程式。
- 使用 SSL 的連線服務目前僅限於支援自身簽名的伺服器證書,即主機信任的模式。依預設,連線配置特性 imqSSLIsHostTrusted 設定為真。
- 當使用 HTTP 傳輸的 JMS 用戶端突然終止 (例如,使用 Ctrl-C) 時,代理程式將需要大約一分鐘來釋放用戶端連線以及所有相關的資源。
如果用戶端的其他實例在這一分鐘內啟動,並且嘗試使用相同的 ClientID、持久訂閱或佇列,則此實例可能會收到「資源衝突」異常。這不是實際發生的問題,它只是上述終止程序的副作用。如果用戶端在延遲大約一分鐘後啟動,則所有作業均可正常執行。
已知的錯誤本節包含 MQ 3.0.1 SP2 發行時已知的較為重要的錯誤之清單。
若要取得目前錯誤、錯誤狀況以及解決方法的清單,Java Developer Connection 成員應參閱 Java Developer Connection 網站上的 [Bug Parade] 頁面。報告新錯誤之前,請查閱此頁面。儘管此處未列出所有的 MQ 錯誤,但是如果您想瞭解某問題是否已報告,它將是一個很好的起點。
相關的頁面為:
若要報告新錯誤或提交功能請求,請將郵件傳送至 imq-feedback@sun.com。
已在 Message Queue 3.0.1 版中修正的錯誤以下是在 MQ 3.0.1、3.0.1 SP1 和 3.0.1 SP2 中已修正的最重要錯誤的簡短說明。
若要取得在 MQ 3.0 中已修正的錯誤,請參閱 MQ 3.0 版次注意事項,該版次注意事項位於
如需有關以下任何錯誤修正的更多詳細資訊,您可以在 Java Developer Connection 網站檢視完整報告:
JMS 中標記為選擇性的功能JMS 規格會指出某些選擇性項目 -- 每個 JMS 提供者 (供應商) 會選擇是否實施它們。MQ 產品對每個選擇性項目的處理如下所示:
技術說明本節包含以下主題的簡短說明:
系統時鐘設定
使用 MQ 系統時,您應仔細地同步化系統時鐘,並避免將它們設定為早於當前時間。
建議同步化
建議您同步化與 MQ 系統互動的所有主機上的時鐘。如果您使用訊息逾時 (TimeToLive),則此操作尤為重要。同步化主機時鐘失敗可能會導致 TimeToLive 無法按預期工作 (訊息可能不會發送)。您應在啟動任何代理程式之前同步化時鐘。
Solaris 您可以在本地主機上發出 rdate 指令,以與遠端主機同步化。(您必須是超級使用者 -- 即 root-- 才能執行該指令。)例如,以下指令可將本地主機 (稱其為 Host 2) 與遠端主機 Host1 同步化:
Linux 指令與 Solaris 類似,但是您必須提供 -s 選項:
Windows 您可以發出帶有時間子指令的網路指令,以將您的本地主機與遠端主機同步化。例如,以下指令可將本地主機 (稱其為 Host 2) 與遠端主機 Host1 同步化:
避免將系統時鐘設定為早於當前時間
您應避免將執行 MQ 代理程式的系統上之時鐘設定為早於當前時間。MQ 使用時間標記來幫助識別內部物件,如異動和持久訂閱。如果將系統時鐘設定為早於當前時間,從理論上講可能會產生重複的內部識別碼。代理程式透過引入識別碼的某些隨機性,以及在執行時偵測時鐘調整來嘗試進行補償,但是如果在代理程式未執行時,將系統時鐘調整為遠遠早於當前時間,則仍有識別碼重複的可能。
如果您需要將執行代理程式的系統上之系統時鐘設定為比當前時間早幾秒鐘,建議您在沒有異動或持久訂閱時進行,或者在代理程式未執行時進行,然後等待一段時間 (您調整的時鐘時間),再重新啟動代理程式。
但是,理想的方法是在啟動任何代理程式之前同步化時鐘,然後使用相應的技術以確保時鐘不會在佈署後有較大調整。
用戶端和代理程式上的作業系統定義的連線限制
在 Solaris 和 Linux 平台上,在其中執行用戶端或代理程式的 shell 對用戶端可以使用的檔案描述元的數目指定了軟式限制。在 MQ 系統中,用戶端建立的每個連線或代理程式接受的每個連線,均使用這些檔案描述元的其中之一。因此,如果不變更此限制,您的代理程式或用戶端便無法支援 256 個以上的連線 (在 Solaris 上) 或 1024 個以上的連線 (在 Linux 上)。(由於某些檔案描述元用於其他用途 [如用於基於檔案的永久性儲存區],因此實際的數目略小於上述數目。)
若要變更此限制,請參閱 ulimit 線上援助頁或以下增加檔案描述元以提昇基於檔案的永久性儲存區的效能中的說明。您需要在用戶端或代理程式將在其中執行的每個 shell 中變更此限制。
增加檔案描述元以提昇基於檔案的永久性儲存區的效能
在 Solaris 和 Linux 平台上,在基於檔案的預設永久性儲存區中儲存訊息的速度受該檔案儲存區可用的檔案描述元數目的影響。(Windows 沒有檔案描述元限制。)大量的描述元可讓系統更快地處理大量的永久性訊息。
若要提昇效能測試或佈署的效能,管理員應增加應用程式 (在此範例中指代理程式程序) 可用的最大數目的檔案描述元,然後透過更新特性值,來增加代理程式所使用的共用檔案描述元暫存區的容量:
此特性的值必須小於您系統上可用的檔案描述元的最大數目。
例如,在 Solaris 上,您可以使用 ulimit 指令來增加檔案描述元限制。程序會從它們的父系 (登入) shell 繼承系統限制。在 Solaris 上,有「硬式」限制和「軟式」限制。對於非超級使用者,應用程式的檔案描述元數目不能超過軟式限制,也不能超過硬式限制。
若要檢查目前的檔案描述元限制:
若要變更「超級」使用者的檔案描述元限制:
之後,從此 shell 建立的任何程序均可以開啟無限制的檔案描述元。因此,在此時執行 imqbroker 指令不會出現問題。
若要變更非超級使用者的檔案描述元限制:
其中 number1 小於 1024,number2 小於 number1。
如果 1024 不夠,您可以選擇執行以下動作:
保護永久性資料
代理程式使用永久性儲存區,可包含與其他資訊一起暫時儲存的訊息檔案。由於這些訊息可能包含專用資訊,建議您保護資料儲存區,以防止未經授權的存取。
代理程式可以使用內建永久性儲存區或外掛永久性儲存區。
內建永久性儲存區
使用內建永久性儲存區的代理程式將永久性資料寫入平面檔資料儲存區,該儲存區位於:
其中 brokerName 是識別代理程式實例的名稱。
brokerName/filestore/ 目錄在代理程式實例首次啟動時建立。保護此目錄的程序取決於在其上執行代理程式的作業系統。
Solaris 和 Linux IMQ_VARHOME/instances/brokerName/filestore/ 目錄的許可權取決於啟動代理程式實例的使用者的 umask。因此,透過適當地設定 umask,您可以限制啟動代理程式實例和讀取其永久性檔案的許可權。此外,管理員 (超級使用者) 可以透過將 IMQ_VARHOME/instances 目錄的許可權設定為 700 來保護永久性資料。
Windows IMQ_VARHOME/instances/brokerName/filestore/ 目錄的許可權可以使用您所使用的 Windows 作業系統提供的機制來設定。這通常需要開啟目錄的特性對話方塊。
外掛永久性儲存區
使用外掛永久性儲存區的代理程式將永久性資料寫入 JDBC 相容的資料庫中。
對於由資料庫伺服器管理的資料庫 (例如 Oracle 資料庫),建議您建立使用者名稱和密碼,以存取 MQ 資料庫表格 (表格名稱以「IMQ」開頭)。如果資料庫不允許保護個別表格,請建立僅由 MQ 代理程式使用的專用資料庫。請諮詢資料庫供應商,以取得有關如何建立使用者名稱/密碼存取的說明文件。
代理程式開啟資料庫連線所需的使用者名稱和密碼可以作為代理程式配置特性提供。但是,在啟動代理程式時,將它們作為指令行選項提供會更加安全 (請參閱「MQ 管理員指南」的附錄 A「設定外掛永久性儲存區」)。
對於代理程式透過資料庫的 JDBC 驅動程式直接存取的內嵌式資料庫 (例如 Cloudscape 資料庫),通常透過在要儲存永久性資料的目錄上設定檔案許可權 (如上面的內建永久性儲存區中所述),來提供安全性。但是,若要確保代理程式和 imqdbmgr 公用程式均可讀取和寫入資料庫,則兩者應由同一個使用者執行。
代理程式記憶體配置
當代理程式將要耗盡 Java 物件使用的 JVM 堆疊儲存區空間時,會使用各種技術 (如流量控制和訊息交換) 來釋放記憶體。在極端情況下,它甚至會關閉用戶端連線以釋放記憶體,並降低訊息的流入量。因此,最好將最大 JVM 堆疊儲存區空間設定得足夠大,以避免發生此類情況。
但是,如果將最大 Java 堆疊儲存區空間設定得過大 (相對於系統實體記憶體),代理程式會持續增加 Java 堆疊儲存區空間,直至整個系統的記憶體用完。這會導致效能降低、不可預料的代理程式當機,和/或影響系統上執行的其他應用程式和服務的運作。
您可以使用 -Xmx Java 指令行引數配置合理的 Java 堆疊儲存區容量限制,來避免此問題。一般說來,最好是先評估正常時和高峰時的系統記憶體足跡,然後再配置 Java 堆疊儲存區容量,使其足以提供良好的效能,但又不會太大,以至出現系統記憶體問題。
用戶端記憶體用完錯誤
如果您正在執行處理大訊息或許多小訊息的 JMS 用戶端,則可能會遇到 OutOfMemoryError 錯誤。用戶端運行時間沒有記憶體錯誤 -- 它只是沒有足夠的記憶體從網路上複製訊息,並將它們發送到您的用戶端。
若要消除這些 OutofMemoryError 錯誤,請增加最大 Java 堆疊儲存區容量。您可以透過將相應的指令行選項傳送至 java 或 jre 指令,來執行此作業。
在 Java2 上,請在執行用戶端應用程式時使用 -Xmx 選項。例如:
請注意以下限制:
如何報告問題若要報告問題,請將郵件傳送至 imq-feedback@sun.com。
如果您有支援合約並且在使用 MQ 時遇到問題,請使用以下其中一種機制與 Sun ONE 客戶支援聯絡:
- Sun ONE 線上支援網站 http://www.sun.com/service/sunone/software/index.html
為便於我們能夠最有效地協助您解決問題,請在聯絡支援人員時準備好以下資訊:
取得更多資訊除 MQ 說明文件之外,您可以按照以下指示尋找其他資訊。
論壇
Sun ONE 軟體論壇
從以下位置可以找到 Sun ONE MQ 論壇:
Java 技術論壇
Java 技術論壇中的 JMS 論壇可能會引起您的興趣。
Sun 歡迎您提出意見
Sun 有志於改善其說明文件,並歡迎您提出意見和建議。請使用電子郵件將您的意見傳送給 Sun,位址如下:
請在電子郵件的主旨行中填寫文件的文件編號 (817-3830-10),並在內文中填寫書名 (Message Queue 3.0.1 版次注意事項)。
其他 Sun 資源您可以在以下網際網路位置找到有用的 Sun ONE 資訊:
- Sun ONE Message Queue 的說明文件
http://docs.sun.com/coll/S1_MessageQueue_301- Sun ONE Message Queue 產品資訊
http://sun.com/software/message_queue- Sun ONE 說明文件
http://docs.sun.com/prod/sunone- Sun ONE 專業服務
http://www.sun.com/service/sunps/sunone- Sun ONE 軟體產品和服務
http://www.sun.com/software- Sun ONE 軟體支援服務
http://www.sun.com/service/sunone/software- Sun ONE 支援和知識庫
http://www.sun.com/service/support/software- Sun 支援和培訓服務
http://www.sun.com/supportraining- Sun ONE 諮詢和專業服務
http://www.sun.com/service/sunps/sunone- Sun ONE 開發人員資訊
http://sunonedev.sun.com- Sun 開發人員支援服務
http://www.sun.com/developers/support- Sun ONE 軟體培訓
http://www.sun.com/software/training- Sun 軟體資料表
http://wwws.sun.com/software
版權 © 2003 Sun Microsystems, Inc. 保留所有權利。
Sun、Sun Microsystems、Sun 標誌、Solaris、Java、Java 咖啡杯標誌、JDBC 和 JDBC Compliant 是 Sun Microsystems, Inc. 在美國和其他國家/地區的商標或註冊商標。Sun ONE Message Queue 的使用必須遵守其隨附的授權合約中所述的規定。