下列問題會影響 Message Queue 代理程式。
當永久資料存放區開啟過多目標時,會無法存取代理程式。(錯誤 4953354)
解決方法:這種情況是由於代理程式達到系統開啟檔案描述元限制所引起的。在 Solaris 和 Linux 上使用 ulimit 指令來增加檔案描述元的限制。
目標若已銷毀,會孤立用戶。(錯誤 5060787)
目標若已銷毀,會孤立使用中的用戶。一旦使用者被孤立,則無法再接收訊息 (即使目標重新建立)。
當使用 HTTP 連線服務的 JMS 用戶端突然終止 (例如,使用 Ctrl-C) 時,代理程式將需要大約一分鐘來釋放用戶端連線以及所有相關的資源。
如果一分鐘內有其他用戶端實例啟動,且其嘗試使用相同的 ClientID、長期訂閱或佇列,則可能會收到「用戶端 ID 已在使用」異常。這不是實際發生的問題,它只是上述終止程序的副作用。如果用戶端在延遲大約一分鐘後啟動,則所有作業均可正常執行。
若使用 MySQL 資料庫作為資料存放區,則會在儲存的訊息超過 1 MB 時丟出「Packet for query is too large... (查詢的封包太大...)」之 SQL 異常。(錯誤 6682815)
解決方法:將 --max_allowed_packet 選項的值設定為大於預設的 1 MB,再啟動 MySQL 伺服器。例如,使用下列值:
--max_allowed_packet=60M
若使用 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)
若使用 MySQL 資料庫作為高度可用的共用資料存放區,則需要可將 MySQL 儲存引擎配置為 NDBCLUSTER 的一套機制。(錯誤 6691394)
解決方法:將下列特性值增加至代理程式的 config.properties 檔案:
imq.persist.jdbc.mysql.tableoption=EMGINE=NDBCLUSTER