如何使用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有类似的方法吗?
感谢。
答案 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"
}
],
...
}
}
的咨询主题。
当您开始订阅时,您将获得一个包含队列的列表(每个队列一个消息)。添加新队列后,您将收到新消息。这很方便。