我一直在网上搜索这方面的文档,很难找到。我的目标是创建一个REST端点,在那里我可以返回队列详细信息,例如我正在制作的自定义仪表板的enqueue, dequeue等计数。
我一直看到这样的文档,比如这个,这个和这个,但是我似乎不知道如何在我的实际程序中获得这些细节。我已经使用了JMX GUI,但这真的不是我需要去的方向。谁能帮我弄清楚如何获得简单的连接到一个代理,将返回这些细节?我确实尝试过研究这个问题,但是我还没有找到一种方法来将这些信息以任何有意义的方式合并到我的应用程序中。
监视代理的方法是通过代理JMX端点和它所公开的管理bean。其他方法是通过公开这些相同mbean的Jolokia REST API。一篇展示如何使用Jolokia位的文章在这里。
下面是一个使用JMX和ActiveMQ的简单示例。
// connection
String url = "service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi";
JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL(url));
MBeanServerConnection connection = connector.getMBeanServerConnection();
// get queue size
ObjectName nameConsumers = new ObjectName("org.apache.activemq:type=Broker,brokerName=localhost,destinationType=Queue,destinationName=myqueue");
DestinationViewMBean mbView = MBeanServerInvocationHandler.newProxyInstance(connection, nameConsumers, DestinationViewMBean.class, true);
long queueSize = mbView.getQueueSize();