如何访问.net中的activemq统计插件
Posted
技术标签:
【中文标题】如何访问.net中的activemq统计插件【英文标题】:how to access the activemq statistics plugin in .net 【发布时间】:2013-03-22 16:50:02 【问题描述】:我正在尝试在c#中访问activemq统计信息http://activemq.apache.org/statisticsplugin.html
这是我到目前为止所拥有的。我无法得到消费者的回复。我可以在监控网站的队列中增加计数。
public class Statistics
private readonly string queueName = string.Empty;
private readonly string queueToMonitor = string.Empty;
private readonly IConnectionFactory connectionFactory;
private readonly IConnection connection;
private readonly ISession session;
private readonly IMessageProducer producer;
private readonly ActiveMQQueue queue;
public Statistics(string qName, string brokerUri, string queueToMon)
this.queueName = qName;
this.queueToMonitor = "ActiveMQ.Statistics.Destination." + queueToMon;
this.connectionFactory = new ConnectionFactory(brokerUri);
this.connection = connectionFactory.CreateConnection();
this.connection.Start();
this.session = connection.CreateSession();
queue = new ActiveMQQueue(qName);
producer = session.CreateProducer(queue);
public void GetStats()
try
var statusQueue = session.CreateTemporaryQueue();
var consumer = session.CreateConsumer(statusQueue);
ActiveMQQueue query = new ActiveMQQueue(queueToMonitor);
var msg = session.CreateMessage();
msg.NMSReplyTo = statusQueue;
producer.Send(queue, msg);
var reply = (ActiveMQMapMessage)consumer.Receive();
if (reply != null)
var test = reply.Content.ToString();
catch (Exception e)
var t = e.Message + " " + e.StackTrace;
【问题讨论】:
您是否确保在您的 Broker 上启用了该插件? 【参考方案1】:您将消息发送到错误的队列。您需要将消息发送到 ActiveMQ.Statistics.Destination.QueueToMonitor 目的地。我重新编写了您的 GetStats() 函数以表明它有效。关键的变化是生产者将消息发送到哪个目的地。
public void GetStats()
try
IDestination statusQueue = session.CreateTemporaryQueue();
IMessageConsumer consumer = session.CreateConsumer(statusQueue);
IDestination query = session.GetQueue(queueToMonitor);
IMessage msg = session.CreateMessage();
IMessageProducer producer = session.CreateProducer(query);
msg.NMSReplyTo = statusQueue;
producer.Send(msg);
IMapMessage reply = (IMapMessage) consumer.Receive();
if(reply != null)
IPrimitiveMap statsMap = reply.Body;
foreach(string statKey in statsMap.Keys)
Console.WriteLine("0 = 1", statKey, statsMap[statKey]);
catch(Exception e)
var t = e.Message + " " + e.StackTrace;
【讨论】:
以上是关于如何访问.net中的activemq统计插件的主要内容,如果未能解决你的问题,请参考以下文章
confluence 统计页面访问量插件Page View Tracker