zoukankan      html  css  js  c++  java
  • mqtt压力测试工具emqtt

    转自:https://blog.csdn.net/vicky_lov/article/details/84585252

    1.emqtt下载地址:http://emqtt.com/downloads,找到自己要下载的版本信息,注意开发版、稳定版;

    2.下载后放到硬盘根目录,进入下载路径目录,cmd进入dos窗口,如下图:

    3.输入.inemqttd consloe,之后弹出启动状态页面,代表启动成功;

    4.登录:地址 :http://localhost:18083/ 

                  用户名为:admin   密码为:public

    登录上去就可以看服务器的运行状态了。

    测试
    依赖 

    <dependency>
            <groupId>org.eclipse.paho</groupId>
            <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
            <version>1.0.2</version>
    </dependency>

    Server

    package com.mymqtt.myemqtt;
     
    import java.util.Scanner;
     
    import org.eclipse.paho.client.mqttv3.MqttClient;
    import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
    import org.eclipse.paho.client.mqttv3.MqttMessage;
     
    public class Server {
     
        public static void main(String[] args) throws Exception {
            String host = "tcp://127.0.0.1:1883";
            String topic = "hello";
            String clientId = "server";// clientId不能重复
            MqttConnectOptions options = new MqttConnectOptions();
            options.setCleanSession(true);
     
            MqttClient client = new MqttClient(host, clientId);
            client.connect(options);
     
            MqttMessage message = new MqttMessage();
     
            @SuppressWarnings("resource")
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入要发送的内容:");
            while (true) {
                String line = scanner.nextLine();
                message.setPayload(line.getBytes());
                client.publish(topic, message);
            }
     
        }
    }

    Client

    package com.mymqtt.myemqtt;
     
    import org.eclipse.paho.client.mqttv3.MqttClient;
    import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
     
    public class Client {
     
        public static void main(String[] args) throws Exception {
     
            String host = "tcp://127.0.0.1:1883";
            String topic = "hello";
            String clientId = "12345";// clientId不能重复
            // 1.设置mqtt连接属性
            MqttConnectOptions options = new MqttConnectOptions();
            options.setCleanSession(true);
            // 2.实例化mqtt客户端
            MqttClient client = new MqttClient(host, clientId);
            // 3.连接
            client.connect(options);
     
            client.setCallback(new PushCallback());
            while (true) {
                client.subscribe(topic, 2);
            }
            // client.disconnect();
        }
    }

    PushCallback

    package com.mymqtt.myemqtt;
     
    import java.util.Date;
     
    import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
    import org.eclipse.paho.client.mqttv3.MqttCallback;
    import org.eclipse.paho.client.mqttv3.MqttMessage;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
     
    public class PushCallback implements MqttCallback {
        private final Logger logger = LoggerFactory.getLogger(this.getClass());
     
        public void connectionLost(Throwable cause) {
            // 连接丢失后,一般在这里面进行重连
            System.out.println("连接断开,可以做重连");
            logger.info("掉线时间:{}", new Date());
        }
     
        public void deliveryComplete(IMqttDeliveryToken token) {
            System.out.println("deliveryComplete---------" + token.isComplete());
        }
     
        public void messageArrived(String topic, MqttMessage message) throws Exception {
            // subscribe后得到的消息会执行到这里面
            // System.out.println(message);
            System.out.println("接收消息主题 : " + topic);
            System.out.println("接收消息Qos : " + message.getQos());
            System.out.println("接收消息内容 : " + new String(message.getPayload()));
        }
     
    }

    结果:

    控制台显示

    两个连接

    è¿éåå¾çæè¿°

    参考资料:http://emqtt.com/

  • 相关阅读:
    Hybrid APP基础篇(三)->Hybrid APP之Native和H5页面交互原理
    Hybrid APP基础篇(二)->Native、Hybrid、React Native、Web App方案的分析比较
    Hybrid APP基础篇(一)->什么是Hybrid App
    JavaScript筑基篇(一)->变量、值与对象
    深入Node.js的进程与子进程:从文档到实践
    深入Node模块Buffer-学会操作二进制
    深入Nodejs模块fs
    刷《一年半经验,百度、有赞、阿里面试总结》·手记
    Asp.Net Core 轻松学-被低估的过滤器
    css精灵图&字体图标
  • 原文地址:https://www.cnblogs.com/mycftest/p/13889281.html
Copyright © 2011-2022 走看看