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)

這可能表示以下三種情況之一

  1. 您正在連線到 ActiveMQ Classic TCP 傳輸未使用的埠

請務必檢查您是否連線到正確的 host:port

  1. 您正在使用 log4j JMS appender 並且沒有過濾掉 ActiveMQ Classic 的日誌訊息

請務必閱讀 如何在 ActiveMQ Classic 中使用 log4j JMS appender,更重要的是,絕對不要將 ActiveMQ Classic 的日誌訊息傳送到 JMS appender

  1. 您的 Broker 可能處於高負載狀態(或網路連線不可靠),因此無法在合理的時間內完成連線設定

如果您偶爾遇到這樣的例外,最好的解決方案是使用 失效轉移傳輸,以便您的客戶端在第一次嘗試失敗時可以嘗試重新連線。如果您更頻繁地收到這種類型的例外,您也可以嘗試延長連線格式協商週期(預設為 10 秒)。您可以使用客戶端連線 URL 中的 wireFormat.maxInactivityDurationInitalDelay 屬性來執行此操作。 例如

tcp://127.0.0.1:61616?wireFormat.maxInactivityDurationInitalDelay=30000

將使用 30 秒的逾時。

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