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

如何通过JMS获取ActiveMQ Artemis中的消息协议?

获取ActiveMQ Artemis消息的协议信息

JMS标准的javax.jms.Message接口本身没有提供获取消息协议的方法,因为JMS是抽象消息规范,协议细节由具体客户端实现处理。针对ActiveMQ Artemis,你可以通过以下两种方式获取:

  • 转换为Artemis专属消息实现类
    ActiveMQ Artemis的JMS消息实现是org.apache.activemq.artemis.jms.client.ActiveMQMessage,你可以将通用的JMS Message强制转换为该类,调用专属方法获取协议:

    import org.apache.activemq.artemis.jms.client.ActiveMQMessage;
    import javax.jms.JMSException;
    
    // ... 你的现有代码 ...
    Message jmsMsg = messages.get(0);
    if (jmsMsg instanceof ActiveMQMessage) {
        ActiveMQMessage artemisMsg = (ActiveMQMessage) jmsMsg;
        String protocol = artemisMsg.getProtocol();
        System.out.println("消息协议:" + protocol);
    }
    

    注意:项目依赖中必须包含ActiveMQ Artemis客户端jar包,才能引用该类。

  • 通过消息属性获取
    ActiveMQ Artemis会自动为消息添加_AMQ_PROTOCOL属性存储协议类型,你可以通过JMS标准的属性API读取:

    import javax.jms.JMSException;
    
    // ... 你的现有代码 ...
    Message jmsMsg = messages.get(0);
    try {
        String protocol = jmsMsg.getStringProperty("_AMQ_PROTOCOL");
        System.out.println("消息协议:" + protocol);
    } catch (JMSException e) {
        e.printStackTrace();
    }
    

    这种方式无需转换实现类,更符合JMS抽象规范,但属性名称是Artemis特定的,换用其他中间件可能无效。

内容的提问来源于stack exchange,提问作者user21871375

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:35:14