javax.jms.JMSException - 連線格式協商逾時 - 對等點未傳送其連線格式。
常見問題 > 錯誤 > 例外 > javax.jms.JMSException - 連線格式協商逾時 - 對等點未傳送其連線格式。
如果您收到類似以下的例外
javax.jms.JMSException: Wire format negociation timeout: peer did not send his wire format.
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:58)
at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1185)
at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1263)
at org.apache.activemq.ActiveMQConnection.start(ActiveMQConnection.java:449)
這可能表示以下三種情況之一
-
您正在連線到 ActiveMQ Classic TCP 傳輸未使用的埠
請務必檢查您是否連線到正確的 host:port
-
您正在使用 log4j JMS appender 並且沒有過濾掉 ActiveMQ Classic 的日誌訊息
請務必閱讀 如何在 ActiveMQ Classic 中使用 log4j JMS appender,更重要的是,絕對不要將 ActiveMQ Classic 的日誌訊息傳送到 JMS appender
-
您的 Broker 可能處於高負載狀態(或網路連線不可靠),因此無法在合理的時間內完成連線設定
如果您偶爾遇到這樣的例外,最好的解決方案是使用 失效轉移傳輸,以便您的客戶端在第一次嘗試失敗時可以嘗試重新連線。如果您更頻繁地收到這種類型的例外,您也可以嘗試延長連線格式協商週期(預設為 10 秒)。您可以使用客戶端連線 URL 中的 wireFormat.maxInactivityDurationInitalDelay
屬性來執行此操作。 例如
tcp://127.0.0.1:61616?wireFormat.maxInactivityDurationInitalDelay=30000
將使用 30 秒的逾時。