activemq-artemis - 如何从服务器获取队列列表?
问题描述
知道如何从 Artemis v2.6.x 中获取所有队列的列表吗?我试图从 下的一些 MBean 中检索它们
org.apache.karaf.jmx
,但它没有按我预期的那样工作。请分享一些可行的解决方案。
解决方案
几个重要的注意事项:
- Artemis MBeans
org.apache.activemq.artemis
默认不在org.apache.karaf.jmx
(尽管可以使用<jmx-domain>
broker.xml 中的元素进行配置)。 - 默认情况下,MBean 名称包括
name
代理的名称(因为多个代理可以在同一个 JVM 中运行)。此名称可使用<name>
broker.xml 中的元素进行配置。默认情况下name
是localhost
。如果需要,可以通过在 broker.xml 中设置来将代理name
从 MBean 的名称中排除。<jmx-use-broker-name>false</jmx-use-broker-name>
- 有几种方法可以从代理获取队列名称:
getQueueNames()
:此方法在ActiveMQServerControl
MBean 上,并返回String[]
在代理上定义的所有队列的名称中的一个。getQueueNames(String)
:此方法在ActiveMQServerControl
MBean 上,并返回String[]
在其路由类型与输入匹配的代理上定义的所有队列的名称中的一个。有效的输入值为anycast
&multicast
。- ActiveMQServerControl 的 API 文档。
jmx
您可以在Artemis 附带的示例中找到访问队列指标的 MBean 客户端的工作示例。您可以在此处在线查看该示例的代码。
下面是从 localhost 上运行的代理获取队列名称的简单代码示例:
import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import java.util.HashMap;
import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl;
import org.apache.activemq.artemis.api.core.management.ObjectNameBuilder;
public class JMXExample {
public static void main(final String[] args) throws Exception {
ObjectName on = ObjectNameBuilder.DEFAULT.getActiveMQServerObjectName();
JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi"), new HashMap());
MBeanServerConnection mbsc = connector.getMBeanServerConnection();
ActiveMQServerControl serverControl = MBeanServerInvocationHandler.newProxyInstance(mbsc, on, ActiveMQServerControl.class, false);
for (String queueName : serverControl.getQueueNames()) {
System.out.println(queueName);
}
connector.close();
}
}
在Artemis 管理文档中查看更多详细信息。
推荐阅读
- php - 在 Windows 10 上安装 Drupal 时如何启用 php 扩展数组
- c - C中的问题与重复元素的字符串数组
- java - 如果 TextProperty 不是 String 属性,是否可以将 TextProperty 绑定到 ObjectProperty 的 String 属性?
- node.js - MongoDB:如何使用 expressjs 从所有集合中读取所有文档?
- regex - 匹配 char 之前的所有字符串并排除 n 个字符串
- javascript - 通过 SQL loader 加载数据并在 JSP 上显示时如何合并空单元格
- python - 我无法减少从天花板上落下的雨滴
- pycharm - Plotly by pycharm jupyter preview 不支持 WebGL
- javascript - 服务器端授权google OAuth 2.0,如何查看token?
- css - 在 Bootstrap 中更改标准选择器