如何访问.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统计插件的主要内容,如果未能解决你的问题,请参考以下文章

Activemq 中一个主题的多个侦听器如何工作?

confluence 统计页面访问量插件Page View Tracker

如何通过 ASP.NET 中的 javascript 访问 textarea 的值?

基于关系数据库的 ActiveMQ 安全插件

如何实现ASP.NET中网站访问量的统计

Ladon插件CVE-2016-3088 ActiveMQ GetShell Exploit