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 附加器并且没有过滤掉 ActiveMQ Classic 日志消息

请务必阅读 如何使用 log4j JMS 附加器与 ActiveMQ Classic,更重要的是,切勿将 ActiveMQ Classic 日志消息发送到 JMS 附加器

  1. 您的代理可能负载过重(或网络连接不可靠),因此连接设置无法在合理的时间内完成

如果您偶尔遇到此类异常,最佳解决方案是使用 故障转移传输,以便您的客户端可以在第一次尝试失败时尝试重新连接。如果您更频繁地遇到此类异常,您还可以尝试延长线路格式协商时间段(默认 10 秒)。您可以通过在客户端连接 URL 中使用 wireFormat.maxInactivityDurationInitalDelay 属性来实现。例如

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

将使用 30 秒超时。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛徽标和 Apache ActiveMQ 项目徽标是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 授权。