徵兆:
用戶未收到產生器傳送的訊息。
可能原因:
可能原因:限制運作方式導致訊息在代理程式上被刪除。
目標記憶體中的訊息數目或訊息容量達到所配置的限制時,代理程式會嘗試節省記憶體資源。達到這些限制時,代理程式會採用 3 個可配置的運作方式,並因此導致訊息遺失:
REMOVE_OLDEST:刪除最舊的訊息。
REMOVE_LOW_PRIORITY:根據訊息存在時間,刪除優先權最低的訊息。
REJECT_NEWEST:拒絕新的永久性訊息。
若要確認此問題的原因:如停用的訊息佇列包含訊息中所描述,檢查停用的訊息佇列。尤其必須遵照「訊息數目或訊息容量超出目標限制」中的指示。尋找 REMOVE_OLDEST 或 REMOVE_LOW_PRIORITY 原因。
若要解決此問題:增加目標限制。例如:
imqcmd update dst -n MyDest - o maxNumMsgs=1000
可能原因:訊息的逾時值過期。
代理程式會刪除逾時值過期的訊息。如果目標積存了太多的訊息,則可能會刪除存在時間值過短的訊息。
若要確認此問題的原因:使用 QBrowser 示範應用程式,查看停用的訊息佇列內容及訊息是否逾時。如需 QBrowser 示範程式在特定平台上的位置,請參閱附錄 AMessage QueueTM 資料的特定平台位置,查看表格中的「應用程式範例與位置」。
以下是 Windows 平台上的呼叫範例:
cd \MessageQueue3\demo\applications\qbrowser java QBrowser
QBrowser 主視窗出現時,請選擇佇列名稱 mq.sys.dmq,然後按一下 [瀏覽]。會出現類似下面的清單:
在任何訊息上連按兩下,即可顯示此訊息的詳細資訊。
請注意訊息 JMS_SUN_DMQ_UNDELIVERED_REASON 特性的值是否為 EXPIRED。
若要解決此問題:連絡應用程式開發者並增加使用期限值。
可能原因:時鐘不同步。
如果時鐘不同步,代理程式計算訊息的使用期限會發生錯誤,如此會導致訊息逾時並被刪除。
若要確認此問題的原因:查看代理程式記錄檔中有無下列訊息:B2102、B2103、B2104。這些訊息都報告偵測到時鐘可能不準。
若要解決此問題:如準備系統資源中所述,檢查有無執行時間同步化程式。
可能原因:訊息使用用戶端無法啟動連線上的訊息傳送。
在用戶端程式碼建立連線並啟動該連線上的訊息傳送之前,將無法傳送訊息。
若要確認此問題的原因:檢查用戶端程式碼是否建立連線並啟動訊息傳送。
若要解決此問題:重新寫入用戶端程式碼,以建立連線並啟動訊息傳送。