【问题标题】:How can I get the enqueue and dequeue count for an ActiveMQ queue WITHIN my Java Spring app?如何在我的 Java Spring 应用程序中获取 ActiveMQ 队列的入队和出队计数?
【发布时间】:2021-11-11 19:36:43
【问题描述】:

我一直在互联网上搜索这方面的文档,很难找到它的难度。我的目标是创建一个 REST 端点,我可以在其中返回队列详细信息,例如我正在制作的自定义仪表板的入队、出队等计数。

我不断看到诸如thisthisthis 之类的文档,但我似乎无法弄清楚如何在我的实际程序中获取这些详细信息。我已经了解了使用 JMX GUI,但这确实不是我需要的方向。谁能帮我弄清楚如何与将返回这些详细信息的经纪人建立简单的联系?我确实尝试过对此进行研究,但我无法找到一种方法将这些信息以任何有意义的方式合并到我的应用程序中。

【问题讨论】:

    标签: java spring queue activemq


    【解决方案1】:

    监控代理的方法是通过代理JMX endpionts 和它公开的管理bean。其他方法是通过公开这些相同 MBean 的 Jolokia REST API。一篇介绍如何使用 Jolokia 位的文章是 here

    下面是使用 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();
    

    【讨论】:

    • 感谢蒂姆的回复。我已经阅读了您发布的 JMX 文档,但我正在为如何在我的 Java 应用程序中实现它而苦苦挣扎。这些似乎都没有包含我可以用来理解如何将其用于我自己目的的代码示例。这似乎是我一直在寻找的答案,但似乎我的理解还不够先进,无法仅基于该文档来实现。您能否提供任何额外的提示来构建我的应用程序以包含此内容?
    • 我看到的一切似乎都指向如何通过任意 MBean 示例与 JConsole 或类似的 GUI 进行交互,而与队列信息的实际代码实现无关。
    猜你喜欢
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 2013-01-17
    • 2016-04-29
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多