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

ActiveMQ Classic迁移Artemis:HTTP传输连接配置问题

解决ActiveMQ Artemis 2.28.0 HTTP连接兼容ActiveMQ Classic的问题

你遇到的核心问题是混淆了ActiveMQ Classic与Artemis的HTTP传输配置逻辑,以及错误使用了Artemis不支持的http:// URI schema。以下是具体解决方案:

1. 修正Broker端Acceptor配置

Artemis没有直接的http://类型连接器/接收器,它通过TCP接收器启用HTTP封装来兼容Classic的HTTP传输(OpenWire over HTTP)。在broker.xml中修改<acceptors>节点(注意:<connectors>是Broker用于连接其他Broker的配置,接收客户端连接需用<acceptors>):

<acceptors>
   <!-- 保留原有TCP acceptor -->
   <acceptor name="artemis">tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;amqpMinLargeMessageSize=102400;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300;amqpDuplicateDetection=true</acceptor>
   <!-- 添加HTTP兼容的OpenWire接收器 -->
   <acceptor name="http-openwire-acceptor">tcp://0.0.0.0:8080?httpEnabled=true&amp;protocols=OPENWIRE</acceptor>
</acceptors>

关键参数说明:

  • httpEnabled=true:开启TCP连接的HTTP封装模式,允许客户端通过HTTP协议发送OpenWire帧
  • protocols=OPENWIRE:明确指定该接收器只处理OpenWire协议(匹配Classic客户端的协议)
  • 端口使用8080(对应你需要的DNS切换地址)

2. 为什么之前的配置报错

Artemis的接收器/连接器URI仅支持tcp://、vm://、udp://等原生schema,直接使用http://会触发Schema http not found错误,必须通过TCP接收器+httpEnabled参数实现HTTP传输兼容。

3. 客户端兼容性验证

原有Classic客户端无需修改任何配置,直接使用http://broker:8080连接即可——Artemis的HTTP封装接收器会自动处理HTTP请求中的OpenWire帧,与Classic的HTTP传输逻辑完全兼容,DNS切换后不会影响现有消费者。

4. 排障要点

  • 确保8080端口未被其他服务占用
  • 检查Broker启动日志,确认http-openwire-acceptor正常初始化
  • 如果客户端连接超时,可添加httpClientIdleTimeout参数调整HTTP连接超时时间,例如:tcp://0.0.0.0:8080?httpEnabled=true&amp;protocols=OPENWIRE&amp;httpClientIdleTimeout=30000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:17:35