Broker Configuration
To configure ActiveMQ to use the statistics plugin add the following to the ActiveMQ XML configuration:
<plugins> <statisticsBrokerPlugin/> </plugins>
The statistics plugin looks for messages sent to particular destinations.
Query running broker statistics
To query the running statistics of the message broker, the client sends an empty message to a Destination named ActiveMQ.Statistics.Broker, and sets the replyto field with the Destination you want to receive the result on. The statistics plugin will send a MapMessage filled with the statistics for the running ActiveMQ broker.
Source code
program DestStatistics; (** Requires ActiveMQ 5.3 or higher To configure ActiveMQ to use the statistics plugin, add the following to the ActiveMQ XML configuration: <broker> ... <plugins> <statisticsBrokerPlugin/> </plugins> ... </broker> Usage: ------ DestStatistics [destination] If no destination is specified, the program returns the broker statistics Reference --------- http://activemq.apache.org/statisticsplugin.html https://issues.apache.org/activemq/browse/AMQ-2379 http://rajdavies.blogspot.com/2009/10/query-statistics-for-apache-activemq.html You can also use wildcards too, and receive a separate message for every destination matched. *) {$APPTYPE CONSOLE} uses SysUtils, BTCommAdapterIndy, BTMessageTransformerXMLMapOmni, BTJMSInterfaces, BTJMSConnection, BTSessionIntf, BTSerialIntf, BTStompTypes, BTTypes, Classes; var Connection: IConnection; Session: ISession; Producer: IMessageProducer; Consumer: IMessageConsumer; Destination, ReplyQueue: IQueue; JMSMessage: ITextMessage; Reply: IMapMessage; MapNames: PMStrings; I: Integer; Key: string; begin Connection := TBTJMSConnection.MakeConnection; try try // Create and assign the message transformer SetTransformer(Connection, TBTMessageTransformerXMLMapOmni.Create(nil)); Connection.Start; Session := Connection.CreateSession(False, amAutoAcknowledge); // listen on reply queue ReplyQueue := Session.CreateQueue('Habari' + '?' + BTStompTypes.SH_TRANSFORMATION + '=' + TRANSFORMER_ID_MAP_XML); Consumer := Session.CreateConsumer(ReplyQueue); // create the pseudo destination if ParamCount = 0 then begin Destination := Session.CreateQueue('ActiveMQ.Statistics.Broker'); end else begin Destination := Session.CreateQueue('ActiveMQ.Statistics.Destination.' + ParamStr(1)); end; // display destination name WriteLn('Request statistics for ' + Destination.QueueName + ' ...'); // create the message and set reply queue name JMSMessage := Session.CreateTextMessage; JMSMessage.JMSReplyTo := ReplyQueue; Producer := Session.CreateProducer(Destination); Producer.Send(JMSMessage); // read the result message Reply := Consumer.Receive(1000) as IMapMessage; // list the map key/values while Assigned(Reply) do begin MapNames := Reply.GetMapNames; for I := 0 to Length(MapNames) - 1 do begin Key := MapNames[I]; WriteLn(Key + '=' + Reply.GetString(Key)); end; WriteLn; Reply := Consumer.Receive(1000) as IMapMessage; end; WriteLn('No more message on queue ' + ReplyQueue.QueueName); Connection.Stop; except on E: Exception do WriteLn(E.Message); end; finally Connection.Close; end; WriteLn('Press any key'); ReadLn; end.

Discover more from Habarisoft Blog
Subscribe to get the latest posts sent to your email.
Reblogged this on Dinesh Ram Kali..