mqtt壓力測試工具emqtt


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

1.emqtt下載地址:http://emqtt.com/downloads,找到自己要下載的版本信息,注意開發版、穩定版;

2.下載后放到硬盤根目錄,進入下載路徑目錄,cmd進入dos窗口,如下圖:

3.輸入.\bin\emqttd 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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM