On 07/26/2017 12:01 PM, zaeem wrote:
Below snippets lets you list Queues on the broker,Topics but i need
something similar to list consumers on Queues for that broker by just
passing a Queue Name.

No such API exists outside JMX, you have to do the work using only advisories and statistics


         public const string QUEUE_ADVISORY_DESTINATION =
"ActiveMQ.Advisory.Queue";
         public const string TOPIC_ADVISORY_DESTINATION =
"ActiveMQ.Advisory.Topic";
         public const string TEMPQUEUE_ADVISORY_DESTINATION =
"ActiveMQ.Advisory.TempQueue";
         public const string TEMPTOPIC_ADVISORY_DESTINATION =
"ActiveMQ.Advisory.TempTopic";

  private static void Enumerate(string destination, Action<DestinationInfo>
action)
         {
             IDestination dest = _session.GetTopic(destination);
             using (IMessageConsumer consumer =
_session.CreateConsumer(dest))
             {
                 IMessage advisory;

                 while ((advisory =
consumer.Receive(TimeSpan.FromMinutes(2000))) != null)
                 {
                     ActiveMQMessage am = advisory as ActiveMQMessage;
                     if (am != null & am.DataStructure != null)
                     {
                         DestinationInfo info = am.DataStructure as
DestinationInfo;
                         if (info != null)
                         {
                             action(info);
                         }
                     }
                 }
             }
         }

         public static void EnumerateQueues()
         {
             Console.WriteLine("Listing all Queues on Broker:");
             Enumerate(QUEUE_ADVISORY_DESTINATION, info =>
                 Console.WriteLine("   Queue: " + info.Destination));
             Console.WriteLine("Listing Complete.");
         }

         public static void EnumerateTopics()
         {
             Console.WriteLine("Listing all Topics on Broker:");
             Enumerate(TOPIC_ADVISORY_DESTINATION, info =>
                 Console.WriteLine("   Topic: " + info.Destination));
             Console.WriteLine("Listing Complete.");

         }

         public static void EnumerateDestinations()
         {
             Console.WriteLine("Listing all Destinations on Broker:");
             Enumerate(ALLDEST_ADVISORY_DESTINATION, info =>
             {
                 string destType = info.Destination.IsTopic ? "Topic" :
"Qeue";
                 destType = info.Destination.IsTemporary ? "Temporary" +
destType : destType;
                 Console.WriteLine("   " + destType + ": " +
info.Destination);
             });
             Console.WriteLine("Listing Complete.");
         }



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/How-to-find-consumers-on-an-existing-ActiveMQ-Queue-in-c-tp4728927p4728936.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


--
Tim Bish
twitter: @tabish121
blog: http://timbish.blogspot.com/

Reply via email to