迁移至Spring Boot 3时如何继续使用ActiveMQ Classic客户端?
Spring Boot 3 Jakarta迁移与ActiveMQ Classic客户端兼容问题
问题描述
在迁移至采用Jakarta命名空间替代Javax的Spring Boot 3时,面临ActiveMQ Classic客户端未适配Jakarta且已被弃用的困境,尝试以下方案均遇阻碍:
- 改用ActiveMQ Artemis客户端:与现有ActiveMQ Classic服务器不兼容,无法正常通信。
- 继续使用旧版ActiveMQ Classic客户端:Spring Boot 3的
JMSTemplate依赖jakarta.*包,要求注入jakarta.jms.ConnectionFactory,但旧版客户端仅提供javax.jms.ConnectionFactory,类型不匹配导致配置失败。
解决方案更新
- 最初可行方案:升级服务端至ActiveMQ Artemis,代码库几乎无需修改即可适配Spring Boot 3的Jakarta环境。
- 2023年4月更新:适配Jakarta的新版ActiveMQ Classic客户端已发布,只需执行以下操作即可解决问题:
- 替换原有
spring-boot-starter-activemq依赖为更新后的版本 - 引入对应适配Jakarta的ActiveMQ Classic客户端依赖
- 替换原有
内容的提问来源于stack exchange,提问作者Samuel
相关产品推荐
相关产品推荐

