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

如何通过JMS获取ActiveMQ Artemis队列的persistentSize?

解决ActiveMQ Artemis通过JMS获取消息persistentSize的问题

JMS标准API并未定义获取消息persistentSize的方法,这个属性是ActiveMQ Artemis的私有扩展,因此需要借助Artemis的专属API来实现:

  • 先将JMS的Message实例转换为Artemis客户端的ActiveMQMessage(这是Artemis对JMS Message的具体实现类)
  • 通过ActiveMQMessage的getCoreMessage()方法获取底层的CoreMessage对象
  • 调用CoreMessage的getPersistentSize()方法即可拿到消息的持久化大小

示例代码如下:

import org.apache.activemq.artemis.jms.client.ActiveMQMessage;
import org.apache.activemq.artemis.core.message.impl.CoreMessage;

// 假设jmsMessage是你获取到的JMS Message对象
if (jmsMessage instanceof ActiveMQMessage) {
    ActiveMQMessage artemisMessage = (ActiveMQMessage) jmsMessage;
    CoreMessage coreMessage = artemisMessage.getCoreMessage();
    long persistentSize = coreMessage.getPersistentSize();
    // 使用persistentSize做后续处理
}

注意事项:

  • 确保项目依赖中包含ActiveMQ Artemis的客户端jar包(如artemis-jms-client)
  • 类型转换前需用instanceof判断,避免类型转换异常

内容的提问来源于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 22:03:13