我试图在java中获取activeMQ队列的所有名称,我找到了几个主题here和here,并且人们建议使用DestinationSource我在我编写代码时,无法在Eclipse中导入。我试过了:
import org.apache.activemq.advisory.DestinationSource;
我使用的是java 1.7和最新的activemq版本5.14.1。是否仍然支持目标源的任何想法? 谢谢,
答案 0 :(得分:1)
获取此信息的最简单方法是使用默认情况下安装的Jolokia。为此,请使用HTTP客户端向以下URI之一发出GET请求:
http://localhost:8161/api/jolokia/search/*:destinationType=Queue,*
http://localhost:8161/api/jolokia/search/*:destinationType=Topic,*
您需要传递JMX用户名和密码(默认值:admin / admin)作为HTTP请求的一部分。系统将回应以下内容:
{
"request" : {
"mbean" : "*:destinationType=Queue,*",
"type" : "search"
},
"status" : 200,
"timestamp" : 1478615354,
"value" : [
"org.apache.activemq:brokerName=localhost,destinationName=systemX.bar,destinationType=Queue,type=Broker",
"org.apache.activemq:brokerName=localhost,destinationName=systemX.foo,destinationType=Queue,type=Broker",
"org.apache.activemq:brokerName=localhost,destinationName=ActiveMQ.DLQ,destinationType=Queue,type=Broker"
]
}
以上显示了队列systemX.foo
,systemX.bar
,ActiveMQ.DLQ
。以下是使用curl
命令的示例:
curl -u admin http://localhost:8161/api/jolokia/search/*:destinationType=Queue,* && echo ""
有关如何使用Jolokia API的详细说明,请参阅the documentation。
答案 1 :(得分:0)
ActiveMQ项目仍然支持该功能,但需要注意的是,根据已经给出here的评论,它可能并不总是有效。如果您在Broker上启用了咨询支持,那么它应该为您提供对存在的目的地的一些了解,尽管JMX会为您提供更多的目的地管理。
有unit tests显示您可以参考的DestinationSource功能。您需要将'activemq-client'jar放在类路径中,这样您的IDE项目可能没有正确配置。