使用ActiveMQ Classic Jakarta版本,咨询是否计划推出activemq-http-jakarta jar
ActiveMQ Classic 5.18.1 Jakarta环境下HTTP/HTTPS传输问题解答
问题背景
使用ActiveMQ Classic 5.18.1 + Spring 6(Jakarta命名空间),通过activemq-client-jakarta实现TCP连接正常,但需要使用HTTP/HTTPS协议时,发现没有对应的activemq-http-jakarta jar包,尝试连接时出现以下报错:
Caused by: jakarta.jms.JMSException: Transport scheme NOT recognized: [https] at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:91) at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1483) at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1548) at org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:370) at org.springframework.jms.core.JmsTemplate.executeLocal(JmsTemplate.java:950) ... 170 common frames omitted Caused by: java.io.IOException: Transport scheme NOT recognized: [https] at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:30) at org.apache.activemq.transport.TransportFactory.findTransportFactory(TransportFactory.java:185) at org.apache.activemq.transport.TransportFactory.compositeConnect(TransportFactory.java:90) at org.apache.activemq.transport.failover.FailoverTransport.doReconnect(FailoverTransport.java:1020) at org.apache.activemq.transport.failover.FailoverTransport$2.iterate(FailoverTransport.java:151) at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133) at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ... 1 common frames omitted Caused by: java.io.IOException: Could not find factory class for resource: META-INF/services/org/apache/activemq/transport/https at org.apache.activemq.util.FactoryFinder$StandaloneObjectFactory.loadProperties(FactoryFinder.java:104) at org.apache.activemq.util.FactoryFinder$StandaloneObjectFactory.create(FactoryFinder.java:61) at org.apache.activemq.util.FactoryFinder.newInstance(FactoryFinder.java:154) at org.apache.activemq.transport.TransportFactory.findTransportFactory(TransportFactory.java:182) ... 8 common frames omitted
核心问题解答
1. 是否有计划推出activemq-http-jakarta jar包?
截至ActiveMQ Classic 5.18.1版本,官方仅完成了核心客户端(activemq-client-jakarta)的Jakarta命名空间适配,尚未推出专门的activemq-http-jakarta包。若需要该特性,可在ActiveMQ官方JIRA提交需求工单,或持续关注后续版本的更新日志。
2. 当前HTTPS连接报错的原因
报错本质是缺少Jakarta版本的HTTP传输工厂实现:传统的activemq-http包依赖javax命名空间API,无法与Spring 6+的Jakarta环境兼容,导致系统无法加载https对应的传输工厂类。
可行解决方案
- 方案1:迁移到ActiveMQ Artemis
Artemis是官方推荐的下一代消息中间件,原生支持Jakarta命名空间,内置HTTP/HTTPS传输支持,无需额外适配,完全兼容Spring 6+生态。 - 方案2:自定义适配HTTP传输包
基于传统activemq-http包,将其中的javax依赖替换为Jakarta对应API(如javax.servlet→jakarta.servlet),重新编译生成自定义的Jakarta版本包。但该方式需自行维护包的兼容性,存在后续版本迭代风险。 - 方案3:改用SSL加密的TCP传输
若业务场景允许,使用ssl://协议替代HTTPS,activemq-client-jakarta原生支持该协议,可满足安全传输需求,无需依赖HTTP传输组件。
内容的提问来源于stack exchange,提问作者Mançaux Pierre-Alexandre
相关产品推荐
相关产品推荐

