2016-10-25 3 views
1

Ich versuche, die activemq Statistik int C# für den Zugriff auf dieses Beispiel nehmen:Zugriff auf activemq Statistik-Plugin in C# .NET

http://activemq.apache.org/statisticsplugin.html

Y viele Möglichkeiten ausprobiert, aber meine empfangen MapMessage ist null oder throw Ausnahme wie " kann nicht AMQMessage zu MapMessage konvertieren“

dies ist meine Klasse:

public class Statistics 
{ 
    private readonly IConnectionFactory connectionFactory; 
    private readonly IConnection connection; 
    private readonly ISession session; 

    public Statistics(string brokerUri) 
    { 
     this.connectionFactory = new ConnectionFactory(brokerUri); 
     this.connection = connectionFactory.CreateConnection(); 
     this.connection.Start(); 
     this.session = connection.CreateSession(); 
    } 

    public void GetStats() 
    { 
     // Crear consumidor 


     try 
     { 
      // Creo una cola y consumidor 
      IDestination queueReplyTo = session.CreateTemporaryQueue(); 
      IMessageConsumer consumer = session.CreateConsumer(queueReplyTo); 


      // Crear cola y productor 
      ActiveMQQueue newQueue = new ActiveMQQueue("ActiveMQ.Statistics.Destination.TEST1"); 
      IMessageProducer producer = session.CreateProducer(null); 

      // Crear cola monitorizada 
      string listeningQueue = "TEST1"; 
      ActiveMQQueue query = new ActiveMQQueue(listeningQueue); 

      // Mandar mensaje vacío y replicar 
      IMessage msg = session.CreateMessage(); 
      producer.Send(newQueue, msg); 
      msg.NMSReplyTo = queueReplyTo; 
      producer.Send(query, msg); 

      // Recibir 
      IMapMessage reply = (IMapMessage)consumer.ReceiveNoWait(); 


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


} 

Wo ist mein erroris mein Fehler? Vielen Dank im Voraus

Antwort

1

können Sie dies versuchen:

public class Statistics 
{ 
    private readonly IConnectionFactory connectionFactory; 
    private readonly IConnection connection; 
    private readonly ISession session; 

    public Statistics(string brokerUri) 
    { 
     this.connectionFactory = new ConnectionFactory(brokerUri); 
     this.connection = connectionFactory.CreateConnection(); 
     this.connection.Start(); 
     this.session = connection.CreateSession(); 
    } 

    public void GetStats() 
    { 
     // Crear consumidor 


     try 
     { 
      // Creo una cola y consumidor 
      IDestination queueReplyTo = session.CreateTemporaryQueue(); 
      IMessageConsumer consumer = session.CreateConsumer(queueReplyTo); 

      // Crear cola monitorizada 
      string listeningQueue = "TEST1"; 
      ActiveMQQueue testQueue = session.GetQueue(listeningQueue); 


      // Crear cola y productor 
      ActiveMQQueue query = session.GetQueue("ActiveMQ.Statistics.Destination.TEST1"); 
      IMessageProducer producer = session.CreateProducer(null); 

      // Mandar mensaje vacío y replicar 
      IMessage msg = session.CreateMessage(); 
      producer.Send(testQueue, msg); 
      msg.NMSReplyTo = queueReplyTo; 
      producer.Send(query, msg); 

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


} 
+0

Ich denke, dass Nachrichten an die „queueReplyTo“ werden automatisch gesendet, wenn eine Nachricht an den anderen erklärten Warteschlangen gesendet wird. Ich weiß nicht, wie 'Statistiken' funktioniert und ich nicht finden, Informationen, wie man es in .NET – Sem

+0

Ich denke, Sie müssen sorgfältig lesen http://activemq.apache.org/statisticsplugin.html um das Konzept zu verstehen. Ich aktualisierte meine Antwort mit C# Code –

+0

"CreateQueue" ist nicht in ISession API – Sem

Verwandte Themen