ActiveMQ从java中删除队列
如何从java程序中删除activemq中的队列?是否有类似session.delelteQueue()的内容ActiveMQ从java中删除队列,activemq,Activemq,如何从java程序中删除activemq中的队列?是否有类似session.delelteQueue()的内容 谢谢M.Java本身不支持会话。那么,你到底想做什么?是否停止访问队列的会话?然后不要访问它并删除(null)对它的引用。如果您不介意使用非JMS API调用,那么您可以将连接对象强制转换为ActiveMQConnection,并调用destroyDestination,并将要删除的目标的实例传递给它。如果目标上没有活动的使用者,它将被删除,否则您将得到一个异常,表明您无法删除具有活动
谢谢M.Java本身不支持会话。那么,你到底想做什么?是否停止访问队列的会话?然后不要访问它并删除(null)对它的引用。如果您不介意使用非JMS API调用,那么您可以将连接对象强制转换为ActiveMQConnection,并调用destroyDestination,并将要删除的目标的实例传递给它。如果目标上没有活动的使用者,它将被删除,否则您将得到一个异常,表明您无法删除具有活动使用者的目标。您可以通过“removeQueue”操作使用JMX执行此操作 有关编程示例,请参见本页:
不使用JMX it将连接转换为ActiveMQConnection并使用其destroyDestination()方法的简单解决方案。 使用该方法的简单实用程序:
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;
import javax.jms.JMSException;
/**
* simple class to delete a queue form the activeMQ broker
* @author josef.
*/
public class QueueDeleter {
public static void main(String[] args) {
if (args.length != 2) {
System.out.println("please specify broker URL and queue name, \nexample: tcp://localhost:61616 queue1");
System.exit(2);
}
ActiveMQConnection conn = null;
try {
conn = (ActiveMQConnection) new ActiveMQConnectionFactory(args[0]).createConnection();
conn.destroyDestination(new ActiveMQQueue(args[1]));
} catch (JMSException e) {
System.out.println("Error connecting to the browser please check the URL" + e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (JMSException e) {
System.out.println("Error closing connection" + e);
}
}
}
}
}
Maven的依赖关系
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.7.0</version>
</dependency>
org.apache.activemq
activemq内核
5.7.0
感谢您的回复。实际上我想要的是:我已经创建了一个队列:queue destination=session.createQueue(“ActiveMQ.DLQ”);现在我想删除它(比如从控制台中删除队列,但从java代码中删除)。非常感谢您的帮助。请参阅可能的副本
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.7.0</version>
</dependency>