如何删除activemq中的特定队列

时间:2013-11-11 06:17:37

标签: java activemq messaging jmx

我希望在activemq中从队列中获取消息后从使用者中删除特定队列。我阅读了很多文章,但没有一篇文章给出了很好的解释。我可以提供队列名称或者相关ID来删除队列。请给出一些建议。

版本:-Activemq 5.8.0。提前谢谢

2 个答案:

答案 0 :(得分:1)

我得到了答案。从java程序中以编程方式删除队列

 JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi");
JMXConnector jmxc = JMXConnectorFactory.connect(url);
MBeanServerConnection conn = jmxc.getMBeanServerConnection();

String operationName="removeQueue"; //operation like addQueue or removeQueue
String parameter="Payment_Check";   // Queue name
ObjectName activeMQ = new ObjectName("org.apache.activemq:brokerName=localhost,type=Broker");
if(parameter != null) {
    Object[] params = {parameter};
    String[] sig = {"java.lang.String"};
    conn.invoke(activeMQ, operationName, params, sig);
} else {
    conn.invoke(activeMQ, operationName,null,null);
} 

你想要在activemq配置文件中更改。默认情况下createConnector =“false”。更改为createConnector =“true”。否则你会收到类似

的错误
 Exception in thread "main" java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException.

这个概念在“ben.odey”的文章“使用JMX API管理ActiveMQ”中进行了解释。 链接: - managing ActiveMQ with JMX APIs

答案 1 :(得分:0)

我也喜欢你的问题。我修好了here。它正在使用QueueViewMBean。哪个有removeMessage功能。您只需要传递messageid