Spring Boot 3中嵌入ActiveMQ Artemis并启用OpenWire协议问题
解决Spring Boot 3嵌入式ActiveMQ Artemis启用OpenWire协议的问题
问题根源
Spring Boot 3基于Jakarta EE 9+规范,依赖jakarta.jms相关API,而你添加的artemis-openwire-protocol是基于旧的javax.jms的版本,两者API包路径不兼容,导致启动时出现javax.jms.InvalidClientIDException类找不到的错误。独立版ActiveMQ Artemis 2.31.2默认使用Jakarta版本的协议组件,所以能正常运行。
解决方案
替换OpenWire协议依赖为Jakarta兼容版本,并利用Spring Boot BOM自动管理版本,避免冲突:
- 移除原有错误的OpenWire依赖:
<!-- 移除这个依赖 --> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>artemis-openwire-protocol</artifactId> <version>2.31.2</version> </dependency>
- 添加Jakarta版本的OpenWire协议依赖:
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>artemis-openwire-protocol-jakarta</artifactId> </dependency>
无需手动指定版本,Spring Boot 3.2.1的BOM已经管理了Artemis 2.31.2版本,会自动匹配正确的依赖版本。
- 确认Acceptor配置正确
在application.properties或application.yml中确保 acceptor 配置包含OPENWIRE:
spring.artemis.mode=embedded spring.artemis.acceptor=tcp://0.0.0.0:61616?protocols=CORE,OPENWIRE
验证
启动应用后,日志不再出现AMQ222203警告,OpenWire客户端即可正常连接嵌入式Broker。
内容的提问来源于stack exchange,提问作者thopaw
相关产品推荐
相关产品推荐

