慢速網路會遺失大型訊息

 常見問題 > 錯誤 > 慢速網路會遺失大型訊息

注意

本文僅適用於舊版本的 ActiveMQ Classic,例如 5.3 和 5.4.0。從 5.4.2 版本開始,此問題已在錯誤 AMQ-2511AMQ-2088 中解決。

您在使用慢速網路傳送大型訊息時可能會遇到問題。

症狀通常是網路連線會中斷並持續重新建立。

此問題的發生原因是 ActiveMQ Classic 訊息代理程式會持續檢查 Socket 上的活動,並且在 TCP Socket 緩衝區中建立大型訊息時,非活動監控器會逾時 - 請參閱設定連線格式TCP 傳輸參考
非活動監控器使用一個活動標誌,該標誌僅在收到訊息後才會更新 (以防連線並非閒置)。
然後,監控器會清除活動標誌,等待逾時時間,並查看活動標誌。如果它仍然清除,那麼我們假設連線處於非活動狀態。當連線未使用時,會傳送保持連線訊息。但是,如果連線因為正在傳送/接收較大型訊息而正在使用中,則不會傳送保持連線訊息,並且活動標誌也不會更新。這可能會導致非活動逾時。
理想情況下,每當從網路接收到幾個位元組時,活動標誌就會被清除…但目前僅在組裝完整訊息時才會清除。

您可以將 wireFormat.maxInactivityDuration 屬性設定為較高的值,或停用它(將其設定為零)來解決此問題。

例如,像這樣設定您的網路連線

<?xml version=”1.0” encoding=”UTF-8”?>

另請參閱

ActiveMQ Classic 非活動監控器

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 The Apache Software Foundation 的商標。Copyright © 2024, The Apache Software Foundation。根據 Apache License 2.0 授權。