我正在使用jmx监控ActiveMQ . 我使用以下链接获取ActiveMQ摘要
http://localhost:8161/api/jolokia/read/org.apache.activemq:type=Broker,brokerName=localhost/BrokerId,TotalEnqueueCount,TotalDequeueCount,TotalConsumerCount,TotalMessageCount,TotalConnectionsCount,TotalConsumerCount,TotalProducerCount,MemoryLimit,MemoryPercentUsage,StoreLimit,StorePercentUsage
At time T1
我正在向ActiveMQ发送100条消息,但我没有将任何消息出列 . 现在看来如下所示
{
"timestamp" : 1437996108,
"status" : 200,
"request" : {
"mbean" : "org.apache.activemq:brokerName=localhost,type=Broker",
"attribute" : ["BrokerId", "TotalEnqueueCount", "TotalDequeueCount", "TotalConsumerCount", "TotalMessageCount", "TotalConnectionsCount", "TotalConsumerCount", "TotalProducerCount", "MemoryLimit", "MemoryPercentUsage", "StoreLimit", "StorePercentUsage"],
"type" : "read"
},
"value" : {
"BrokerId" : "ID:synclap5489-54676-1437995895016-0:1",
"TotalConnectionsCount" : 100,
"TotalDequeueCount" : 0,
"StoreLimit" : 104857600,
"TotalConsumerCount" : 0,
"TotalMessageCount" : 100,
"TotalProducerCount" : 0,
"MemoryPercentUsage" : 0,
"StorePercentUsage" : 9,
"TotalEnqueueCount" : 100,
"MemoryLimit" : 739717939
}
}
并停止ActiveMQ服务器,使100条消息处于Pending状态 .
At time T2
再次启动ActiveMQ并发送另外100条消息,但不发送任何消息 . 现在Json数据如下所示
{
"timestamp" : 1437996721,
"status" : 200,
"request" : {
"mbean" : "org.apache.activemq:brokerName=localhost,type=Broker",
"attribute" : ["BrokerId", "TotalEnqueueCount", "TotalDequeueCount", "TotalConsumerCount", "TotalMessageCount", "TotalConnectionsCount", "TotalConsumerCount", "TotalProducerCount", "MemoryLimit", "MemoryPercentUsage", "StoreLimit", "StorePercentUsage"],
"type" : "read"
},
"value" : {
"BrokerId" : "ID:synclap5489-55183-1437996657303-0:1",
"TotalConnectionsCount" : 100,
"TotalDequeueCount" : 0,
"StoreLimit" : 104857600,
"TotalConsumerCount" : 0,
"TotalMessageCount" : 100,
"TotalProducerCount" : 0,
"MemoryPercentUsage" : 0,
"StorePercentUsage" : 9,
"TotalEnqueueCount" : 100,
"MemoryLimit" : 739717939
}
}
After Deque
出列所有消息后,我得到如下的json数据
{
"timestamp" : 1437997015,
"status" : 200,
"request" : {
"mbean" : "org.apache.activemq:brokerName=localhost,type=Broker",
"attribute" : ["BrokerId", "TotalEnqueueCount", "TotalDequeueCount", "TotalConsumerCount", "TotalMessageCount", "TotalConnectionsCount", "TotalConsumerCount", "TotalProducerCount", "MemoryLimit", "MemoryPercentUsage", "StoreLimit", "StorePercentUsage"],
"type" : "read"
},
"value" : {
"BrokerId" : "ID:synclap5489-55183-1437996657303-0:1",
"TotalConnectionsCount" : 101,
"TotalDequeueCount" : 200,
"StoreLimit" : 104857600,
"TotalConsumerCount" : 1,
"TotalMessageCount" : -100,
"TotalProducerCount" : 0,
"MemoryPercentUsage" : 0,
"StorePercentUsage" : 9,
"TotalEnqueueCount" : 100,
"MemoryLimit" : 739717939
}
}
TotalDequeueCount更改为200 TotalEnqueueCount保持100 TotalMessageCount更改-100 .
My question :
为什么我在TotalMessageCount中获得负值?
为什么只有在使用待处理消息重启代理时才会发生这种情况?
怎么解决这个?