You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行组件测试时遭遇Wire format协商超时问题求助

ActiveMQ连接异常:Wire format negotiation timeout 排查与解决

环境配置

  • JDK 17
  • jakarta.jms:jakarta.jms-api:3.1.0
  • 操作系统:Windows WSL
  • Docker:通过Rancher Desktop运行activemq:latest镜像

依赖配置(build.gradle)

org.apache.activemq:activemq-client:6.1.1

配置文件

application.yml

csiReceiving:
  responseQueue: ${queue.csi.receiving.response}
  mqserver: ${queue.csi.receiving.mqserver}
  localQueueProtocol: tcp://
  localQueueHost: 192.168.208.1
  localQueuePort: 61616

application-test.yml

queue:
  csi:
    primary:
      endpoint: activemq
      destination: Queue.Request
      response: Queue.Reply
    secondary:
      endpoint: activemq
      destination: Queue.RequestGpp
      response: Queue.ReplyGpp
    receiving:
      response: Queue.ReplyDp
      mqserver: local

异常日志

2024-08-07 18:42:37.709  INFO 44320 --- [测试工作线程] [CID:] o.a.c.impl.engine.AbstractCamelContext   : Apache Camel 4.6.0 (camel-12) 已启动,耗时150ms (构建:0ms 初始化:0ms 启动:150ms)
2024-08-07 18:42:37.740  INFO 44320 --- [测试工作线程] [CID:] c.n.e.s.c.stubs.CamelContextWrapper      : Camel上下文DataPower已创建
2024-08-07 18:42:37.826  INFO 44320 --- [测试工作线程] [CID:] o.a.camel.language.xpath.XPathBuilder    : 创建默认XPathFactory com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl@6682c2c0
2024-08-07 18:42:37.913  INFO 44320 --- [测试工作线程] [CID:] o.a.c.impl.engine.AbstractCamelContext   : Apache Camel 4.6.0 (camel-13) 正在启动
2024-08-07 18:42:38.459  INFO 44320 --- [ActiveMQ Task-1] [CID:] o.a.a.t.failover.FailoverTransport       : 已成功连接到 tcp://localhost:61616
2024-08-07 18:42:43.889 DEBUG 44320 --- [CustomerProfilePool 管家线程] [CID:] com.zaxxer.hikari.pool.HikariPool        : CustomerProfilePool - 连接池统计 (总连接数=7, 活跃=0, 空闲=7, 等待=0)
2024-08-07 18:42:43.889 DEBUG 44320 --- [CustomerProfilePool 管家线程] [CID:] com.zaxxer.hikari.pool.HikariPool        : CustomerProfilePool - 跳过填充连接池,当前连接数充足或正在填充中 (队列深度=0)。
2024-08-07 18:42:48.470  WARN 44320 --- [测试工作线程] [CID:] o.a.a.t.failover.FailoverTransport       : 传输连接(tcp://localhost:61616)失败,尝试自动重连

java.io.IOException: Wire格式协商超时:对方未发送其Wire格式。
    at org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:99)
    at org.apache.activemq.transport.failover.FailoverTransport.oneway(FailoverTransport.java:670)
    at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
    at org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81)
    at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:86)
    at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1454)
    at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1548)
    at org.apache.activemq.ActiveMQConnection.start(ActiveMQConnection.java:568)

排查思路与解决办法

1. 版本兼容性问题

你使用的activemq-client:6.1.1属于ActiveMQ 6.x体系,而Docker官方activemq:latest镜像默认是ActiveMQ 5.x版本(6.x已更名为Artemis,镜像为apache/activemq-artemis)。两者的Wire通信格式不兼容,直接导致协商失败。

  • 解决:
    • 切换客户端依赖到ActiveMQ 5.x版本,比如org.apache.activemq:activemq-client:5.18.3(尽量和服务端版本匹配);
    • 或者替换Docker镜像为apache/activemq-artemis:latest,并使用对应的Artemis客户端依赖。

2. WSL网络映射问题

日志显示客户端连接的是tcp://localhost:61616,但配置文件中指定的localQueueHost是192.168.208.1,可能存在WSL与宿主机器的端口映射错误,导致实际未连接到容器内的ActiveMQ服务。

  • 解决:
    • 检查Rancher Desktop的端口映射规则,确保容器61616端口已映射到WSL的61616端口;
    • 修改客户端连接地址为192.168.208.1:61616,并排查代码是否正确读取了localQueueHost和localQueuePort配置。

3. WireFormat配置不匹配

即使版本兼容,自定义的WireFormat参数也可能导致协商失败。ActiveMQ 5.x默认使用openwire格式,而6.x客户端默认格式可能不同。

  • 解决:
    • 如果坚持用6.x客户端连接5.x服务端,在连接URL后添加参数指定格式:?wireFormat=openwire&wireFormat.version=10;
    • 检查客户端代码中是否有自定义WireFormat配置,确保与服务端参数一致。

4. 服务未完全启动

日志中连接成功后过了几秒才抛出超时,可能是ActiveMQ容器还未完成初始化,客户端就发起了请求。

  • 解决:
    • 在测试代码中添加等待逻辑,比如轮询ActiveMQ管理端口或日志,确认服务启动完成后再执行测试;
    • 查看容器日志,确认出现ActiveMQ Broker started类的启动完成标识。

内容的提问来源于stack exchange,提问作者ERK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:56:13