我不知道如何使用 JMS 获取 Artemis ActiveMQ 队列中的 permanentSize。我在Message类中没有找到任何get方法。有不同的方法来获取消息 ID、生命周期等,但我没有找到任何获取 persistSize 的方法
无法使用 JMS API 从 JMS
Message
获取 ActiveMQ Artemis“persistentSize”值。此属性不是 JMS 的一部分。它特定于 ActiveMQ Artemis。
也就是说,您可以简单地查看消息本身来确定它有多大。例如,如果消息是
TextMessage
,那么您可以使用 getText()
方法获取 String
正文,然后使用 length()
方法查看其长度。如果消息是 BytesMessage
,您可以使用 getBodyLength()
方法。
如果您真的想要获得“persistentSize”并且您使用的是ActiveMQ Artemis附带的核心JMS客户端,那么您必须将JMS
Message
转换为ActiveMQ Artemis实现对象org.apache.activemq.artemis.jms.client.ActiveMQMessage
并使用 getCoreMessage
方法获取 org.apache.activemq.artemis.api.core.client.ClientMessage
然后调用 getPersistentSize()
。
当然,不推荐,因为它会破坏应用程序的可移植性,而这正是使用 JMS 这样的 API 的主要好处之一。简而言之,您永远不能将此代码与任何其他客户端实现或任何其他代理实现一起使用,并且由于它被认为是内部的,因此在升级过程中它可能会中断,恕不另行通知。