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

如何通过JMS获取ActiveMQ Artemis代理队列的消息属性及全部头部?

获取ActiveMQ消息全部头部属性的方法

你的现有代码是用来判断特定属性_AMQ_LARGE_SIZE是否存在,要获取全部消息头部属性,只需要去掉针对特定属性的判断逻辑,完整遍历所有枚举出来的属性名,并逐个获取对应的值即可。

修改后的完整代码示例

ArrayList<Message> messages = new ArrayList<>();
// 先校验消息列表非空,避免空指针异常
if (!messages.isEmpty()) {
    Message targetMsg = messages.get(0);
    Enumeration<?> propertyNames = targetMsg.getPropertyNames();
    // 用Map存储所有头部属性的键值对,方便后续操作
    Map<String, Object> allMessageHeaders = new HashMap<>();

    while (propertyNames.hasMoreElements()) {
        String propName = (String) propertyNames.nextElement();
        // 根据属性名获取对应的值
        Object propValue = targetMsg.getProperty(propName);
        allMessageHeaders.put(propName, propValue);
    }

    // 示例:遍历打印所有头部属性
    for (Map.Entry<String, Object> headerEntry : allMessageHeaders.entrySet()) {
        System.out.printf("头部属性名: %s, 属性值: %s%n", headerEntry.getKey(), headerEntry.getValue());
    }
}

关键说明

  • 增加了消息列表非空判断,防止调用messages.get(0)时出现NullPointerException
  • 使用HashMap存储所有属性键值对,便于后续的查询、遍历或其他业务处理
  • 核心逻辑是遍历getPropertyNames()返回的所有属性名,通过getProperty(propName)获取每个属性对应的值
  • 如果只需要收集属性名而不需要值,直接遍历propName存入集合即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:17:09