ActiveMQ Artemis中STOMP连接设置connection TTL=-1不生效问题
ActiveMQ Artemis 连接超时问题排查与解决
你遇到的AMQ229014错误说明服务器仍在使用60秒的默认连接TTL,即便你已经设置了-1,可以从以下几个方向排查修复:
确认
connection-ttl-override配置在STOMP专属的Acceptor上
全局的<connection-ttl-override>配置可能不会覆盖特定协议Acceptor的默认值,需要直接在STOMP的Acceptor配置中指定参数。修改broker.xml中的STOMP Acceptor配置:<acceptor name="stomp-acceptor">tcp://0.0.0.0:61613?protocols=STOMP;connection-ttl-override=-1</acceptor>或者使用XML参数标签的形式:
<acceptor name="stomp-acceptor"> <factory-class>org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptorFactory</factory-class> <param name="tcp-port" value="61613"/> <param name="protocols" value="STOMP"/> <param name="connection-ttl-override" value="-1"/> </acceptor>检查客户端STOMP CONNECT帧的心跳配置
如果客户端没有发送任何数据(包括心跳),服务器可能仍会触发超时。确保客户端在CONNECT帧中设置正确的心跳参数:- 若不需要心跳,设置
heart-beat: 0,0 - 若需要心跳,确保客户端按配置间隔发送心跳帧,避免服务器因长时间无数据触发超时
- 若不需要心跳,设置
排查全局配置冲突
检查broker.xml的<core>段中是否存在<connection-ttl>配置,如果该值被设为60000,可能会覆盖你的override配置。可以将全局<connection-ttl>也设为-1,或者确保Acceptor的connection-ttl-override优先级更高。验证配置生效状态
启动Broker后,查看启动日志中STOMP Acceptor的参数输出,确认connection-ttl-override已被正确加载为-1;也可以通过Artemis控制台查看Acceptor的配置详情,确认参数无误。
内容的提问来源于stack exchange,提问作者Md Jameel
相关产品推荐
相关产品推荐

