下列問題會影響 Message Queue 代理程式。
當連線至 Message Queue 3.7 代理程式時,Message Queue 4.4 用戶端接收到不清楚的警告 (錯誤 6899886)
當 Message Queue 4.4 用戶端連線至 Message Queue 3.7 代理程式時,用戶端接收到下列形式的警告:
WARNING [I500]: Caught JVM exception: ... [C4036]: A broker error occurred. :[505] bad version ...
此「bad version」警告表示用戶端應以更低的協定層級重新連線至代理程式。
當使用 JDBC 資料存放區時,以純文字儲存資料庫密碼 (錯誤 6691717)
解決方法:如「Sun GlassFish Message Queue 4.4 Administration Guide」中的「Password Files」所述,保護包含資料庫密碼的密碼檔案。
當永久資料存放區開啟過多目標時,會無法存取代理程式。(錯誤 4953354)
解決方法:這種情況是由於代理程式達到系統開啟檔案描述元限制所引起的。在 Solaris 和 Linux 上使用 ulimit 指令來增加檔案描述元的限制。
目標若已銷毀,會孤立用戶。(錯誤 5060787)
目標若已銷毀,會孤立使用中的用戶。一旦使用者被孤立,則無法再接收訊息 (即使目標重新建立)。
當使用 HTTP 連線服務的 JMS 用戶端突然終止 (例如,使用 Ctrl-C) 時,代理程式將需要大約一分鐘來釋放用戶端連線以及所有相關的資源。
如果一分鐘內有其他用戶端實例啟動,且其嘗試使用相同的 ClientID、長期訂閱或佇列,則可能會收到「用戶端 ID 已在使用」異常。這不是實際發生的問題,它只是上述終止程序的副作用。如果用戶端在延遲大約一分鐘後啟動,則所有作業均可正常執行。
MySQL 資料庫用為資料存放區時,儲存的訊息只要超過 1 MB 即會丟出 SQL 異常「Packet for query is too large...」(查詢的封包太大...)。(錯誤 6682815)
解決方法:啟動 MySQL 伺服器,並將 --max_allowed_packet 選項設為大於預設值 1 MB 的值。例如,使用下列值:
--max_allowed_packet=60M
若使用 MySQL 資料庫作為高度可用的共用資料存放區,則需要可將 MySQL 儲存引擎配置為 NDBCLUSTER 的一套機制。(錯誤 6691394)
解決方法:將下列特性值增加到代理程式的 config.properties 檔案中 (請參閱「Sun GlassFish Message Queue 4.4 Administration Guide」中的「Enhanced Clusters: JDBC Configuration Properties 」)。
imq.persist.jdbc.mysql.tableoption=EMGINE=NDBCLUSTER
使用 Oracle 9i (JDBC 9.2.0.x) 驅動程式時,代理程式會丟出「Failed to persist property...」(無法保留特性...) 異常。(錯誤 6626825)
解決方法:使用 Oracle 10g (JDBC 10.2.0.x) 驅動程式,代理程式已針對此進行最佳化處理。
imq.persist.jdbc.derby.table.MYCONSTATE41.index.IDX2=CREATE INDEX &(index) ON $(name) (MESSAAGE_ID)
若使用 Java DB 資料庫作為資料存放區,則會在儲存訊息時丟出「lock could not be obtained within the time requested (在請求的時間內無法取得鎖定)」之 SQL 異常。(錯誤 6691394)
解決方法:將下列特性值增加到代理程式的 config.properties 檔案中:
imq.persist.jdbc.derby.table.MYCONSTATE41.index.IDX2=CREATE INDEX &(index) ON $(name) (MESSAAGE_ID)
在 AIX 上使用 IBM JVM 時,代理程式有時會在原因不明的情況下,遇到記憶體不足或耗盡的狀態 (錯誤 6899526)
解決方法:使用 IBM JVM 的最新版本 (Java Runtime 1.6.0 IBM Corporation 或更高版本),並將以下 IBM JVM GC 選項傳送至 imqbrokerd:
# imqbrokerd -vmargs -Xgcpolicy:gencon |