2015-12-03 2 views

ответ

2

Пожалуйста, попробуйте это.

public void Test() 
     { 

      //Please create connection and session @ this point 

      String QUEUE_ADVISORY_DESTINATION = "ActiveMQ.Advisory.Queue"; 
      IDestination dest = Session.GetTopic(QUEUE_ADVISORY_DESTINATION); 

      using (IMessageConsumer consumer = Session.CreateConsumer(dest)) 
      { 
       IMessage advisory; 

       while ((advisory = consumer.Receive()) != null) 
       { 
        ActiveMQMessage amqMsg = advisory as ActiveMQMessage; 

        if (amqMsg.DataStructure != null) 
        { 
         DestinationInfo info = amqMsg.DataStructure as DestinationInfo; 
         if (info != null) 
         { 
          Console.WriteLine(" Queue: " + info.Destination.ToString()); 
         } 
        } 
       } 
      } 
      Console.WriteLine("Listing Complete."); 

     } 

Это не гарантированный способ размещения очередей. См. this answer.

+0

Попытка это .. Спасибо ... По крайней мере, получил направление. – Zach

0

В приведенном выше решении содержится один дефект. Если вы будете пытаться получить сообщение, как это:

consumer.Receive() 

вы будете ждать бесконечно долго, пока новое событие не будет произошло с очередями информации в ActiveMQ.

Я рекомендую установить тайм-аут:

consumer.Receive(TimeSpan.FromMilliseconds(2000)) 

и посмотреть пример offitial site

Смежные вопросы