как удалить определенную очередь в activemq

я хочу удалить определенную очередь от потребителя после получения сообщения из очереди в activemq. Я прочитал много статей, но ни одна из них не дает хорошего объяснения. Я могу указать имя очереди или идентификатор корреляции для удаления очереди. пожалуйста, дайте какое-нибудь предложение.

версия:-Activemq 5.8.0. заранее спасибо


person nichu09    schedule 11.11.2013    source источник
comment
как вы хотите удалить очередь, из java-кода или какой-то консоли администратора? В JMS есть API для удаления очереди, а в ActiveMQ есть JMX API для удаления очередей.   -  person Claus Ibsen    schedule 11.11.2013
comment
@ClausIbsen Спасибо за ответ. я получил ответ. я хочу удалить из java-кода. Я сделал это по этой ссылке consulting-notes.com/2010/08/   -  person nichu09    schedule 11.11.2013


Ответы (2)


Я получил ответ. Программно удалить очередь из 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» «Управление ActiveMQ с помощью JMX API». Ссылка: - управление ActiveMQ с помощью JMX API

person nichu09    schedule 11.11.2013
comment
Необходимо использовать это как имя объекта: org.apache.activemq:BrokerName=localhost,Type=Broker - person user2601995; 20.12.2014

Мне тоже нравится ваша проблема. Я исправил так здесь. Он использует QueueViewMBean. Которые имеют функцию removeMessage. Вам просто нужно пройти messageid.

person Zaw Than oo    schedule 25.07.2014