我想覆寫BrokerFilter類的send()方法。如何從「org.apache.activemq.command.Message」獲取actievmq隊列的大小?
此方法有兩個參數:ProducerBrokerExchange和Message。
我可以從這兩個參數中獲得目標隊列的大小嗎?
我使用的是activemq-all-5.13.2.jar。
我想覆寫BrokerFilter類的send()方法。如何從「org.apache.activemq.command.Message」獲取actievmq隊列的大小?
此方法有兩個參數:ProducerBrokerExchange和Message。
我可以從這兩個參數中獲得目標隊列的大小嗎?
我使用的是activemq-all-5.13.2.jar。
你可以參考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);
}
}
你可以使用:
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");
BrokerFilter似乎沒有getRegionDestination方法。並且消息具有getRegionDestination方法,但運行時只能得到空值。 – Solo
我使用的是activemq-all-5.13.2.jar – Solo