Activemq队列列表nms .NET

时间:2015-04-27 07:36:41

标签: .net activemq nms

如何使用ActiveMQ NMS(.NET)获取队列和主题列表。获取JAVA中的列表很简单。但是.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有类似的方法吗?

感谢。

1 个答案:

答案 0 :(得分:3)

选项1:

在java中,你会使用JMX(我猜),但你可以使用jolokia endpoint通过HTTP / JSON访问JMX接口。

例如,如果您通过此URL(密码保护)访问代理信息:<%= link_to product do %> <%= image_tag product.photo.url(:thumb) %> <% end %>

您应该能够从JSON信息中解析队列。

回复与此类似:

http://<hostname>:8161/api/jolokia/read/org.apache.activemq:type=Broker,brokerName=localhost

选项2:

如果您想坚持使用纯NMS,可以订阅名为{ "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" } ], ... } } 的咨询主题。

当您开始订阅时,您将获得一个包含队列的列表(每个队列一个消息)。添加新队列后,您将收到新消息。这很方便。