Quarkus JMS连接WildFly内嵌ActiveMQ Artemis收发消息故障排查
问题排查与解决方案
1. 验证WildFly中Artemis的权限配置有效性
- 检查
standalone-full.xml里的security-settings节点,确保guest角色对prices队列的全量权限配置正确,示例配置如下:<security-settings> <security-setting match="prices"> <permission type="createNonDurableQueue" roles="guest"/> <permission type="deleteNonDurableQueue" roles="guest"/> <permission type="createDurableQueue" roles="guest"/> <permission type="deleteDurableQueue" roles="guest"/> <permission type="send" roles="guest"/> <permission type="consume" roles="guest"/> <permission type="browse" roles="guest"/> </security-setting> </security-settings> - 确认
test1用户归属guest组:检查application-users.properties中存在test1=加密密码,同时application-roles.properties中存在test1=guest,也可通过add-user.sh的查询功能直接验证。
2. 核对Quarkus客户端连接配置
- 确认连接URL指向正确的Artemis acceptor端口:WildFly默认TCP acceptor端口为
5445,HTTP acceptor为8080,对应配置示例:
TCP连接:
HTTP升级连接(需WildFly acceptor开启quarkus.artemis.url=tcp://localhost:5445 quarkus.artemis.username=test1 quarkus.artemis.password=你的密码http-upgrade-enabled=true):quarkus.artemis.url=http-remoting://localhost:8080 quarkus.artemis.username=test1 quarkus.artemis.password=你的密码 quarkus.artemis.http-upgrade-enabled=true - 检查客户端代码中队列名称
prices的拼写,Artemis队列名称区分大小写,避免因大小写不匹配导致无法访问。
3. 排查JMS会话与收发组件初始化问题
- 确认客户端代码正确初始化JMS上下文、生产者/消费者,示例代码如下:
@Inject @JMSConnectionFactory("artemis") JMSContext context; @Inject @JMSDestination(name = "prices") Queue pricesQueue; // 发送消息逻辑 public void sendPriceMessage(String content) { context.createProducer().send(pricesQueue, content); } // 监听消息逻辑 @JMSListener(destination = "prices") public void handlePriceMessage(String content) { // 业务处理逻辑 } - 若日志中无会话创建相关条目,尝试手动创建连接工厂排查初始化问题:
@Produces public ConnectionFactory createArtemisConnectionFactory() { ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(); factory.setBrokerURL("tcp://localhost:5445"); factory.setUser("test1"); factory.setPassword("你的密码"); return factory; }
4. 查看WildFly Artemis调试日志定位问题
- 在
standalone-full.xml中开启Artemis debug级日志:<logger category="org.apache.activemq.artemis"> <level name="DEBUG"/> </logger> - 启动WildFly后查看
standalone/log/server.log,重点查找权限拒绝类日志(如AMQ229031: Unable to validate user、AMQ229019: Permission denied),此类日志可直接定位权限或认证问题。
5. 验证用户连接与会话状态
- 通过WildFly管理控制台(默认地址
http://localhost:9990)进入Runtime->Messaging->Servers->default->Connections,查看是否存在test1用户的活跃连接。若没有,说明客户端认证未通过,需检查密码或用户组配置是否正确。
内容的提问来源于stack exchange,提问作者Benny Dict
相关产品推荐
相关产品推荐

