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

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连接:
    quarkus.artemis.url=tcp://localhost:5445
    quarkus.artemis.username=test1
    quarkus.artemis.password=你的密码
    
    HTTP升级连接(需WildFly acceptor开启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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:05:23