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
[sourcecode language=”Delphi”]
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.
[/sourcecode]

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