2015-04-27 2 views
1

Как получить список очередей и тем, используя ActiveMQ NMS (.NET). Получение списка в JAVA прост. Но как насчет .NET.Activemq список очередей nms .NET

В Java я использовал это:

String messageBrokerUrl = "tcp://localhost:61616"; 
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
      "admin", "admin", messageBrokerUrl); 
ActiveMQConnection connection; 


connection = (ActiveMQConnection) connectionFactory 
     .createConnection(); 
connection.start(); 
this.session = connection.createSession(this.transacted, ackMode); 

DestinationSource ds = connection.getDestinationSource(); 
Set<ActiveMQQueue> queues = ds.getQueues(); 

for (ActiveMQQueue activeMQQueue : queues) { 
    System.out.println(activeMQQueue.getQueueName()); 
} 

Есть ли подобный способ для .NET?

Спасибо.

ответ

3

Вариант 1:

В Java, вы бы использовать JMX (я думаю), но вы можете получить доступ к интерфейсу JMX через HTTP/JSON с помощью jolokia endpoint.

Например, если вы получаете доступ к информации брокера по этому адресу (защищен паролем): http://<hostname>:8161/api/jolokia/read/org.apache.activemq:type=Broker,brokerName=localhost

Вы должны быть в состоянии разобрать очереди из информации JSON.

Ответ похож на это:

{ 
    "request": { 
     "mbean": "org.apache.activemq:brokerName=localhost,type=Broker", 
     "type": "read" 
    }, 
    "status": 200, 
    ... 
    "value": { 
     "BrokerId": .... 
     "Queues": [ 
      { 
       "objectName": "org.apache.activemq:brokerName=localhost,destinationName=QUEUE.1,destinationType=Queue,type=Broker" 
      }, 
      { 
       "objectName": "org.apache.activemq:brokerName=localhost,destinationName=ANOTHER.QUEUE,destinationType=Queue,type=Broker" 
      }, 
      { 
       "objectName": "org.apache.activemq:brokerName=localhost,destinationName=ActiveMQ.DLQ,destinationType=Queue,type=Broker" 
      }, 
      { 
       "objectName": "org.apache.activemq:brokerName=localhost,destinationName=FOO.BAR,destinationType=Queue,type=Broker" 
      } 
     ], 
     ... 
    } 
} 

Вариант 2:

Если вы хотите придерживаться чистого NMS, вы можете подписаться на консультативную тему называется ActiveMQ.Advisory.Queue.

Когда вы начинаете подписку, вы отправляете список с очередями (по одному сообщению в очереди). Когда новые очереди будут добавлены, вы получите новые сообщения. Это может быть удобно.

+0

Я обновил вопрос. Можете ли вы проверить? –

+0

Я не знаю такой возможности в NMS. Вышеупомянутые два решения, о которых я знаю. –

+0

Спасибо. Дай мне попробовать. –