MQTT介紹
MQ(message queue)消息隊列,是基礎數據結構 先進先出 的一種典型數據結構。一般用來解決應用解耦,異步消息,流量削鋒等問題,實現高性能,高可用,可伸縮和最終一致性架構。
MQ主要產品包括:RabbitMQ、ActiveMQ、RocketMQ、ZeroMQ、Kafka
MQTT 是輕量的 (Lightweight)、發布訂閱模式 (PubSub) 的物聯網消息協議
至於現在企業中,特別是電商企業中,喜歡用MQ的原因,可以參考閱讀:https://www.zhihu.com/question/54152397 文章寫的不錯,還挺有趣的
linux機器中MQTT服務搭建
注意: 如果已經有MQTT環境,環境搭建這一章節,可以跳過
安裝
準備一台linux機器(以centos7),搭建國內開源emqx項目,目前該項目最新版本,還未發布centos8版本,所以,如果您的電腦為centos8,centos7均可以執行:
# 安裝必須的依賴
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加穩定的存儲庫
sudo yum-config-manager --add-repo https://repos.emqx.io/emqx-ce/redhat/centos/7/emqx-ce.repo
# 如果低於cento8,可以直接用這一個命令一鍵安裝,centos8則要執行上面的,再執行這句
curl https://repos.emqx.io/install_emqx.sh | bash
啟動
執行:
# 直接啟動
emqx start
# 或者
sudo systemctl start emqx
# 或者
sudo service emqx start
# 查看運行狀態
emqx_ctl status
# 停止
emqx stop
訪問
MQTT服務採用TCP協議傳輸數據,埠有多個,其中可以外部訪問的埠默認1883。
管理台訪問埠18083,用戶:admin,密碼:public
埠說明1883MQTT / TCP 協議埠,可以被外部訪問11883MQTT / TCP 協議內部埠,只能當前機器自身訪問8883MQTT / SSL 協議埠8083MQTT / WS 協議埠8084MQTT / WSS 協議埠18083MQTT / HTTP協議埠,HTTP管理台訪問埠,用戶admin ,密碼public
配置及日誌
配置文件: /etc/emqx/emqx.conf
listener.tcp.external = 0.0.0.0:1883 # 可以外網訪問的埠
listener.tcp.internal = 127.0.0.1:11883 # 只能本機訪問
log.dir = /var/log/emqx # 日誌文件路徑
log.level = warning # 日誌級別
log.file = emqx.log # 日誌文件,會自動在後面增加數字
日誌文件:/var/log/emqx
- 參考:https://docs.emqx.io/broker/v3/cn/install.html#https://docs.emqx.io/broker/latest/cn/
Jmeter測試MQTT
方法一:
安裝插件MQTT Protocol Support
啟動jmeter,進入 選項(options) > Plugins Manager > Available Plugins 搜索MQ, 選擇MQTT Portocol Support, 然後安裝並重啟jmeter。
安裝成功後,在jmeter的取樣器中,新增了MQTT Publisher、MQTT Subscriber
其中,MQTT Subscriber 是註冊一個主題,MQTT Publisher是使用主題發送消息。
添加MQTT Subscriber 在 Provider URL地址中,填寫你的伺服器ip,然後點擊右側的 Generate ID 自動生成Client ID,然後再在Topic中,輸入一個主題信息,在Text Message中,填寫要發布的信息。run一下,就成功了。
方法二:
使用websocket插件
在插件管理中,安裝 WebSocket Samplers by Peter Doornbosch
安裝成功後,在取樣器中,添加WebSocket Open Connection, 協議選擇默認的ws, ip填寫你的伺服器ip地址,埠默認為8083,Path根據你的MQ的socket地址填寫。
再添加 WebSocket Single Write Sample, Connection選擇 use existing connection, 在Request data中,填寫要發送的信息,run一下,搞定。
好了, 關於Jmeter如何調用MQ的測試方法,我們就介紹到這。你都掌握了嗎?