2017-05-04 77 views

回答

1

你可以參考StatisticsBrokerPlugin。

代碼在這裏,如果別人需要。

ActiveMQDestination msgDest = messageSend.getDestination(); 
    String physicalName = msgDest.getPhysicalName(); 
    logger.info("dest: " + physicalName); 

    ActiveMQDestination queryDestination = ActiveMQDestination.createDestination(physicalName, msgDest.getDestinationType()); 
    Set<Destination> destinations = getDestinations(queryDestination); 
    logger.info(destinations); 
    long count = 0; 
    for (Destination dest : destinations) { 
     DestinationStatistics stats = dest.getDestinationStatistics(); 
     if (stats != null) { 
      count = stats.getMessageSize().getCount(); 
      logger.info("size: " + count); 
     } 
    } 
0

你可以使用:

BrokerFilter.getRegionDestination().getDestinationStatistics().getMessages().getCount(); 

你有這一切的統計中org.apache.activemq.broker.region.DestinationStatistics

enqueues = new CountStatisticImpl("enqueues", "The number of messages that have been sent to the destination"); 
dispatched = new CountStatisticImpl("dispatched", "The number of messages that have been dispatched from the destination"); 
dequeues = new CountStatisticImpl("dequeues", "The number of messages that have been acknowledged from the destination"); 
forwards = new CountStatisticImpl("forwards", "The number of messages that have been forwarded to a networked broker from the destination"); 
inflight = new CountStatisticImpl("inflight", "The number of messages dispatched but awaiting acknowledgement"); 
expired = new CountStatisticImpl("expired", "The number of messages that have expired"); 

consumers = new CountStatisticImpl("consumers", "The number of consumers that that are subscribing to messages from the destination"); 
consumers.setDoReset(false); 
producers = new CountStatisticImpl("producers", "The number of producers that that are publishing messages to the destination"); 
producers.setDoReset(false); 
messages = new CountStatisticImpl("messages", "The number of messages that that are being held by the destination"); 
messages.setDoReset(false); 
messagesCached = new PollCountStatisticImpl("messagesCached", "The number of messages that are held in the destination's memory cache"); 
processTime = new TimeStatisticImpl("processTime", "information around length of time messages are held by a destination"); 
blockedSends = new CountStatisticImpl("blockedSends", "number of messages that have to wait for flow control"); 
blockedTime = new TimeStatisticImpl("blockedTime","amount of time messages are blocked for flow control"); 
messageSize = new SizeStatisticImpl("messageSize","Size of messages passing through the destination"); 
+0

BrokerFilter似乎沒有getRegionDestination方法。並且消息具有getRegionDestination方法,但運行時只能得到空值。 – Solo

+0

我使用的是activemq-all-5.13.2.jar – Solo