下列問題會影響 Message Queue 代理程式。
當永久資料存放區開啟過多目標時,會無法存取代理程式。(錯誤 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)