Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在.net中访问activemq统计插件_Activemq_Nms - Fatal编程技术网

如何在.net中访问activemq统计插件

如何在.net中访问activemq统计插件,activemq,nms,Activemq,Nms,我正在尝试访问c中的activemq统计信息# 这就是我目前所拥有的。我无法得到消费者的答复。我可以在监视器网站上为队列增加计数 public class Statistics { private readonly string queueName = string.Empty; private readonly string queueToMonitor = string.Empty; private readonly IConnectionFactory conn

我正在尝试访问c中的activemq统计信息#

这就是我目前所拥有的。我无法得到消费者的答复。我可以在监视器网站上为队列增加计数

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;
        }

    }
}

您正在将消息发送到错误的队列。您需要将消息发送到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;
    }
}

您是否确保在您的代理上启用了该插件?