从activemq中的队列中获取消息后,我想从消费者中删除特定队列。我阅读了很多文章,但没有一篇给出很好的解释。我可以提供队列名称或相关 ID 来删除队列。请给一些建议。
版本:-Activemq 5.8.0。提前谢谢
我得到了答案。从 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".change 到 createConnector="true".otherwise 你会得到像这样的错误
Exception in thread "main" java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException.
这个概念在“ben.odey”的文章“使用 JMX API 管理 ActiveMQ”中进行了解释。链接:-使用 JMX API 管理 ActiveMQ
我也喜欢你的问题。我在这里修好了。它正在使用QueueViewMBean
. 有哪些removeMessage
功能。你只需要通过messageid
。