You need to enable JavaScript to run this app. Windows环境下向Apache ActiveMQ 5发送消息出现循环异常问题
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境下向Apache ActiveMQ 5发送消息出现循环异常问题

问题诱因
  • 核心诱因是协议不匹配:客户端发送消息时使用的传输协议,与ActiveMQ监听端口绑定的协议不一致。错误提示中的数据类型77对应ASCII字符M,是客户端发送的非期望协议报文被OpenWire协议解析器识别到的典型特征,常见场景包括用OpenWire客户端错连AMQP/STOMP等其他协议端口、或是用HTTP客户端请求OpenWire的61616端口。
  • 循环报错是重试机制导致:单次连接失败后,Apache Camel或Spring Batch的默认重试逻辑会反复创建新连接发起请求,所以日志中会出现连续不同本地端口的连接失败记录。
  • Windows系统的临时端口释放逻辑会放大该现象:异常中断的连接不会被立即回收,重试过程会持续占用新的临时端口,短时间内生成大量报错日志。
解决方案
  1. 核对客户端连接配置与ActiveMQ端口协议的对应关系
    确认Apache Camel的ActiveMQ组件配置的连接URI,与你要使用的协议端口完全匹配:
    • 若使用OpenWire协议,连接端口应为61616,URI格式为tcp://127.0.0.1:61616
    • 若使用AMQP协议,连接端口应为5672,同时引入AMQP客户端依赖,不要使用OpenWire客户端连接其他协议端口
  2. 配置连接失败的熔断限制
    在Camel路由或Spring Batch作业配置中添加重试次数上限,避免无限循环重试:
<!-- Camel路由重试配置示例,最多重试3次,间隔2秒 -->
<route>
    <from uri="direct:sendToAmq"/>
    <onException>
        <exception>java.io.IOException</exception>
        <redeliveryPolicy maximumRedeliveries="3" redeliveryDelay="2000"/>
    </onException>
    <to uri="activemq:queue:targetQueue"/>
</route>
  1. 若确实需要通过HTTP协议访问ActiveMQ,可在ActiveMQ配置的transportConnectors节点下新增HTTP传输连接器:
<transportConnector name="http" uri="http://0.0.0.0:8080?maximumConnections=1000&amp;wireFormat.maxFrameSize=1994857600"/>

配置完成后即可通过8080端口使用HTTP协议发送消息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 06:06:03