Java 查询ActiveMQ队列的峰值大小

Java 查询ActiveMQ队列的峰值大小,java,jms,activemq,Java,Jms,Activemq,我试图编写一个脚本,通过shell(使用ActiveMQ admin query命令)查询ActiveMQ,以确定“到目前为止”(即自服务器启动以来)队列的最大大小 当我输入以下查询时: activemq管理查询-QQueue=MyQueueName 我得到以下输出: Java Runtime: Sun Microsystems Inc. 1.6.0_25 /usr/java/jdk1.6.0_25/jre Heap sizes: current=91456k free=90978k

我试图编写一个脚本,通过shell(使用
ActiveMQ admin query
命令)查询ActiveMQ,以确定“到目前为止”(即自服务器启动以来)队列的最大大小

当我输入以下查询时:

activemq管理查询-QQueue=MyQueueName

我得到以下输出:

Java Runtime: Sun Microsystems Inc. 1.6.0_25 /usr/java/jdk1.6.0_25/jre
    Heap sizes: current=91456k  free=90978k  max=1358080k
        JVM args: -Dactivemq.classpath=/usr/local/activemq/conf; -Dactivemq.home=/usr    /local/activemq -Dactivemq.base=/usr/local/activemq
ACTIVEMQ_HOME: /usr/local/activemq
ACTIVEMQ_BASE: /usr/local/activemq
Connecting to pid: 3005
DequeueCount = 5930
Name = MyQueueName
MinEnqueueTime = 0
CursorMemoryUsage = 733711
MaxAuditDepth = 2048
Destination = loadable
AverageEnqueueTime = 0.45332837486054295
InFlightCount = 0
MemoryLimit = 1048576
Type = Queue
EnqueueCount = 8067
MaxEnqueueTime = 79
MemoryUsagePortion = 0.0
ProducerCount = 0
UseCache = true
BlockedProducerWarningInterval = 30000
MaxProducersToAudit = 32
CursorFull = false
BrokerName = localhost
PrioritizedMessages = false
ConsumerCount = 0
ProducerFlowControl = true
Subscriptions = []
QueueSize = 2137
MaxPageSize = 200
CursorPercentUsage = 69
DispatchCount = 620
MemoryPercentUsage = 69
ExpiredCount = 0
当我转到web控制台时,我看到
2137
消息在
MyQueueName
中排队,它对应于此输出中的
QueueSize
字段

但有一次(在Java应用程序执行期间),我在这个队列中看到了3000多条消息

ActiveMQ是否提供了获取“全局最大队列大小”的指标?也就是说,在任何时间点排队的消息的最大数量是多少


提前谢谢

从那时起,代理是否停止/启动?我只是试着自己,如果我停止代理,队列中的数据就会“消失”,对我来说这听起来像个bug。您应该在ActiveMQ论坛上询问这一点。顺便说一句,我使用的是5.5.1版,正如他们所说的,这是最新的稳定版本,而且这个bug一点也不新,看看相关的AMQ-1367

同样,您的最佳选择是在ActiveMQ论坛上:


干杯,尤金。

接下来,论坛上没有人(用户或开发人员)回复我的帖子。我会将此解释为“不问,因为我们不在乎”回答,并将此问题标记为已回答,并附加一条规定,即鉴于软件的当前状态,我所寻求的是不可能的。@AdamTannon很抱歉,您可以检查最新版本并试一试,但这似乎太多了。你能把你帖子的链接贴出来吗?我将尝试打开一个bug,看看人们对它的看法。谢谢!