ActiveMQ实践系列1——远程监控

近期项目中应用到了ActiveMQ,本次和大家分享下ActiveMQ的远程监控,希望对大家有帮助。

情景

因某需求,需要获取一个队列(Queue)下有几个消费者,及每个消费者的使用情况。

折腾过程

找了很久没找到资料,后来发现官方提供的管理界面上有类似功能,真是踏破铁鞋无觅处,问题搞定了哈哈哈

然而……我需要是获取消费者的代码,光有界面有个毛用;然后我想到官方既然提供了界面,那肯定也是个web工程;就在安装目录下有个webapps的项目,就是管理界面的web工程。

导入web项目一番寻找后,终于锁定了一个类RemoteJMXBrokerFacade,能够获取某个队列下的消费者情况。

核心代码

1.引入依赖

springboot如何整合activemq的不说明了,不懂的童鞋请自行百度哈。

RemoteJMXBrokerFacade类需要引入activemq-web包,但是此包依赖了一大堆其他的东东,用<exclusions>排除掉就可以了。

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-all</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-continuation</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.eclipse.jetty.websocket</groupId>
            <artifactId>websocket-server</artifactId>
        </exclusion>
    </exclusions>
</dependency>

2. ActiveMQ配置

在安装目录的conf路径下找到activemq.xml

打开文件,找到managementContext并修改为true;看注释的意思应该就是暴露一个JMX端口来监控ActiveMQ,默认端口1099

<!--
    The managementContext is used to configure how ActiveMQ is exposed in
    JMX. By default, ActiveMQ uses the MBean server that is started by
    the JVM. For more information, see:

    http://activemq.apache.org/jmx.html
-->
<managementContext>
    <managementContext createConnector="true"/>
</managementContext>

3. ActiveMQ配置

1)直接创建Bean,方便在项目中直接注入

@Configuration
@EnableJms
public class JmsConfiguration {
    @Bean
    public RemoteJMXBrokerFacade remoteJMXBrokerFacade() {
        RemoteJMXBrokerFacade brokerFacade = new RemoteJMXBrokerFacade();
        System.setProperty("webconsole.jmx.url", "service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi");
        SystemPropertiesConfiguration configuration = new SystemPropertiesConfiguration();
        brokerFacade.setConfiguration(configuration);
        return brokerFacade;
    }
}

2)调用代码

@Resource
private RemoteJMXBrokerFacade brokerFacade;

public void test() throws Exception {
    QueueConsumerQuery consumerQuery = new QueueConsumerQuery(brokerFacade);
    consumerQuery.setJMSDestination("test.queue");
    Collection<SubscriptionViewMBean> consumers = consumerQuery.getConsumers();
    for(SubscriptionViewMBean consumer : consumers) {
        System.out.println("消费者信息:" + consumer.getConnectionId() + "  " + consumer.getSelector());
    }
}

3)测试结果

这样就能以代码的形式监控ActiveMQ,获取消费者的情况;消费者的其他信息请查看SubscriptionViewMBean的源码。

原文地址:https://www.cnblogs.com/ZRyouChin/p/10073977.html

时间: 2024-08-25 11:19:17

ActiveMQ实践系列1——远程监控的相关文章

SWTBOK测试实践系列(3) -- 既然计划永远赶不上变化,我们还要测试计划干嘛?

一天,测试经理老马迟疑着点下了Email的"发送"按钮,长叹一声,往后一仰靠到椅背上.发送这个主题为"回归测试将推迟一周"的通知实为无奈之举啊!一些重要的缺陷开发团队还来不及修复,加上最近几天测试环境的部署经常出现莫名的异常,导致半天都无法测试,原定下周开始的回归测试不得不推迟了!几分钟后,测试人员小王兴冲冲地跑到老马跟前,满脸疑惑地问:"经理,我刚看到你的Email了.又要延期啊!既然我们的测试计划老是在变,干嘛还要定计划?"老马坐正,略带欣慰

JMeter Plugin插件配置及远程监控

下载jmeter plugins 插件: https://jmeter-plugins.org/downloads/all/ 官网建议我们直接下载plugins-manager.jar,然后进行可选择性(勾选)地安装需要的插件功能,这种安装插件方式虽然便捷,不用手工配置jmeter,即可以使用. 但是,作为学习一门技术,动手学习,不断摸索实践,是最有效的学习方法. JMeter Plugins共提供了五类组件:Standard Set . Extras Set .Extras with Libs

Nagios学习实践系列——基本安装篇

开篇介绍 最近由于工作需要,学习研究了一下Nagios的安装.配置.使用,关于Nagios的介绍,可以参考我上篇随笔Nagios学习实践系列--产品介绍篇 实验环境 操作系统:Red Hat Enterprise Linux Server release 6.0 (Santiago)   64 bit. 注意,Nagios只能安装在Linux或Unix平台,不支持Windows平台,当然,它可以监控Windows平台. 环境准备 Apache 和PHP 不是安装Nagios所必须的,其实也可以说

Nagios学习实践系列

其实上篇Nagios学习实践系列--基本安装篇只是安装了Nagios基本组件,虽然能够打开主页,但是如果不配置相关配置文件文件,那么左边菜单很多页面都打不开,相当于只是一个空壳子.接下来,我们来学习研究一下Nagios的配置,了解一下基本的配置和了解各类配置文件. Nagios配置目录 Nagios的配置文件位于etc目录下(/usr/local/nagios/etc)如下图所示: 配置文件简介 配置文件名 功能描述 cgi.cfg 控制CGI访问的配置文件 nagios.cfg 主配置文件:主

SWTBOK测试实践系列(2) --你会把开发人员提交测试的版本打回去吗?

开发人员奋斗了很多个夜晚,终于把版本提交测试了.他们可以松一口气了.但是噩耗很快传来,软件没有通过测试团队的预测试(为了保证测试进程,对开发人员提交的代码进行基本功能或业务流程的验证).开发经理老王,迅速找到负责预测试的测试经理老张. 老王说:老张啊,怎么回事?出什么问题了?我们好不容易开发完成了,你们怎么不测试还把版本打回来了? 老张说:你们提交的版本质量太差,没有我们的预测试,需要重新修改后,符合我们的要求,我们才能测试.你看看我们发现的这两个问题. 老王并没有看这两个问题,而是直接质疑老张

[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器

上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis  介绍了Redis的初始化脚本文件及启动配置文件,并图解如何以服务的形式来启动.终止Redis服务,可以说我们的Redis本地服务器已基本搭建完成,那可能就有小伙伴要问了,什么叫基本搭建完成,原因是此时的Redis服务虽然已经可以正常启\停,但是客户端还无法远程连接到Redis并执行响应的操作.若要实现远程客户端正常连接,我们仍需要对Redis启动配置文件进行一些设置,这个章节我们重点来讲解下如何对Redis

jenkins X实践系列(1) —— 背景知识

本文介绍jenkins X(以下简称jx)相关的背景技术. jenkins X 简介 Jenkins X 是一个高度集成化的CI/CD平台,基于Jenkins和Kubernetes实现,旨在解决微服务体系架构下的云原生应用的持续交付的问题,简化整个云原生应用的开发.运行和部署过程. jx 基于gitops,将k8s分为preview.staging.production几个环境, 详细的devops可以查看下图: jx是云原生CICD,devops的一个最佳实践之一,目前在快速的发展成熟中.最近

visualVM远程监控JVM

对于完全没用使用过visualVM的初学者 环境:Windows PC上使用visualVM监控远端JVM @@@@jstatd方式连接@@@@ 1.Windows安装jdk,$JAVA_HOME/bin/jvisualvm.exe,jdk自带图形化监控工具,双击运行 2.linux安装jdk, $JAVA_HOME/bin 下创建一个新文件  jstatd.all.policy,编辑该文件,填入内容,配置环境变量,若没有配置,file后面添加tool.jar的绝对路径 grant codeba

Azure实践系列 4:启用和配置免费的MFA

在上一篇的实践系列中我们已经配置好了我们云端的Azure AD,我们可以将云服务器加入到域,也可以添加用户到云端的Azure AD中,那相对于现在这有一个移动为先云为先的时代,云端的Azure AD和传统的AD相比还有什么优势呢?第一,云端的Azure AD使用方便,其次不需要我们维护域控制器,也不需要我们投入相应的硬件,所有的管理只需要一个浏览器,配合鼠标与键盘.那就只有这点优势了吗,当然不是,云端Azure AD还提供免费的不限次数没有任何费用收取的多重身份验证服务MFA. 在开始本篇的实践