可以通过编写代码来批量删除这些管理队列。
以下是使用Java API删除当前连接到的Artemis broker中所有管理队列的示例代码:
import javax.jms.ConnectionFactory;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
import org.apache.activemq.artemis.api.core.client.ServerLocator;
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory;
import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
import org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory;
public class ManagementQueueRemover {
public static void main(String[] args) {
String host = "localhost"; // Artemis broker 的主机名或 IP 地址
int port = 61616; // Artemis broker 的连接端口号
String username = "admin"; // Artemis broker 的用户名
String password = "admin"; // Artemis broker 的密码
ServerLocator serverLocator = null;
ClientSessionFactory sessionFactory = null;
ClientSession session = null;
try {
TransportConfiguration transportConfiguration = new TransportConfiguration(NettyConnectorFactory.class.getName());
serverLocator = ActiveMQJMSConnectionFactory.createServerLocatorWithoutHA(new TransportConfiguration[]{transportConfiguration});
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(serverLocator, username, password);
sessionFactory = ((ActiveMQConnectionFactory) connectionFactory).createSessionFactory();
session = sessionFactory.createSession(username, password, false, true, true, false, 0);
session.start();
String managementQueuePrefix = "__artemis.management";
String[] queryResult = session.managementQuery("SELECT name FROM queue WHERE name LIKE '" + managementQueuePrefix + "%'");
for (String queueName : queryResult) {
session.deleteQueue(queueName);
System.out.println("Deleted queue " + queueName);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (session != null) {
session.close();
}
if (sessionFactory != null
下一篇:Artemis消息路由