zoukankan      html  css  js  c++  java
  • JMX获取Activemq的详细信息

    Apache ActiveMQ 自带监控管理界面,浏览器activemq启动ip:8161即可,初始用户名密码为admin,admin;本文是想解决将activemq的监控添加到自己的项目中。

    image-20201015162855239

    image-20201015162926003

    然后,编辑activemq为程序开启的入口,需要添加一些配置:

        ACTIVEMQ_CONF="/root/apache-activemq-5.14.0/conf"
        ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=2011 "
        ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_CONF}/jmx.password"
        ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_CONF}/jmx.access"
        ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.ssl=false"
        ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.1.144"
    

    对jmx.access、jmx.password文件进行权限更新,执行如下命令

    chmod 400 conf/jmx.*
    

    测试代码:

    /**
     * @author WGR
     * @create 2020/10/15 -- 13:43
     */
    public class Test {
    
    
        private static final String jmxDomain = "org.apache.activemq";
    
        public static void main(String[] args) throws Exception {
    
            JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://192.168.1.144:2011/jmxrmi");
            Hashtable<String, String[]> env = new Hashtable<>();
            String[] credentials = new String[] {"admin","activemq"};
            env.put(JMXConnector.CREDENTIALS, credentials);
            JMXConnector connector = JMXConnectorFactory.connect(url,env);
            connector.connect();
            MBeanServerConnection connection = connector.getMBeanServerConnection();
    
            ObjectName name = new ObjectName(jmxDomain + ":brokerName=localhost,type=Broker");
            BrokerViewMBean mBean = MBeanServerInvocationHandler.newProxyInstance(connection, name, BrokerViewMBean.class, true);
            System.out.println("Producers:"+mBean.getQueueProducers().length);
            System.out.println("Subscribers:"+mBean.getQueueSubscribers().length);
            for (ObjectName queueName : mBean.getQueues()) {
                try {
                    QueueViewMBean queueMBean = MBeanServerInvocationHandler.newProxyInstance(connection, queueName, QueueViewMBean.class, true);
                    // 消息队列名称
                    ObjectName[] names = queueMBean.getSubscriptions();
                    for(int i=0;i<names.length;i++){
                        System.out.println(names[i].toString());
                    }
    
                    System.out.println("Queue Name --- " + queueMBean.getName());
                    // 队列中剩余的消息数
                    System.out.println("Number Of Pending Messages --- " + queueMBean.getQueueSize());
                    // 消费者数
                    System.out.println("Number of Consumers --- " + queueMBean.getConsumerCount());
                    // 入队数
                    System.out.println("Messages Enqueue ---" + queueMBean.getEnqueueCount());
                    // 出队数
                    System.out.println("Messages Dequeue ---" + queueMBean.getDequeueCount());
    
                    for (CompositeData compositeData : queueMBean.browse()){
                        CompositeDataSupport compositeDataSupport = (CompositeDataSupport) compositeData;
                        try{
                            System.out.println("---JMSDestination---"+compositeDataSupport.get("JMSDestination"));
                            System.out.println("---PropertiesText---"+compositeDataSupport.get("PropertiesText"));
                            System.out.println("---PropertiesText---"+compositeDataSupport.get("JMSMessageID"));
                            System.out.println("---ContentMap---"+compositeDataSupport.get("ContentMap"));
                        }catch (Exception e){
    
                        }
                    }
                }catch (Exception e){
                }
            }
        }
    
    }
    
    
  • 相关阅读:
    WIN10系统下静态编译Qt4.8.7
    python-使用python获取一段录音
    【探索之路】机器人篇(5)-Gazebo物理仿真环境搭建_让机器人运动起来
    【探索之路】机器人篇(4)-根据3D文件来优化自己的机器人模型
    【探索之路】机器人篇(3)-给mwRobot建立模型
    【探索之路】机器人篇(2)-ROS系统并创建工作空间和项目
    【探索之路】机器人篇(1)-ROS-mwRobot开篇
    【kinetic】操作系统探索总结(八)键盘控制
    webstorage
    mysqld: [ERROR] Found option without preceding group in config file D:TONGmysql-5.7.19-winx64my.ini at line 1!
  • 原文地址:https://www.cnblogs.com/dalianpai/p/13821380.html
Copyright © 2011-2022 走看看