重新編譯jmeter監控插件
A. 如何在 JMeter 中使用 MQTT 插件
JMeter 內置 HTTP/HTTPS、TCP 等支持多種協議,還具備插件擴展機制。
MQTT 協議作為物聯網界的主流協議,雖然並非 JMeter 自帶的協議類型,但在物聯網測試場景中極為普遍。為了支持 MQTT 協議的規模測試,EMQ 映雲科技開發了基於 JMeter 的 MQTT 協議開源測試插件: https://github.com/xmeter-net/mqtt-jmeter 。
經過幾個版本的迭代,目前 JMeter MQTT 插件的最新版本為 2.0.2,支持連接、消息發布、消息訂閱等多種采樣器,並可通過組合構建更復雜的測試場景。
本文我們將具體介紹如何在 JMeter 中使用 MQTT 插件。
MQTT 插件的安裝方式與其他 JMeter 第三方插件類似。
連接采樣器模擬物聯網設備,發起 MQTT 連接。
Server name or IP: 指向被測 MQTT 伺服器地址。
Port number: 以 EMQ X 為例,默認 TCP 連接的埠是 1883, SSL 連接則是 8883。具體的埠請參照伺服器的具體配置。
MQTT version : 目前支持 MQTT 3.1及3.1.1版本。
Timeout: 連接超時設置,以秒為單位。
Protocols: 支持TCP、SSL、WS 和 WSS 方式連接 MQTT 伺服器。當選擇 SSL 或 WSS 加密通道連接時,可以選擇單向或者雙向認證(Dual)。如果希望進行雙向認證,還需要指定相應的客戶端證書(p12證書),以及對應的文件保護密碼(Secret)。
User authentication: 如果 MQTT 伺服器配置了用戶認證,需要提供相應的用戶名( User name )和密碼( Password )。
ClientId: 虛擬用戶的標識。如果勾選了「Add random suffix for ClientId」,將會在 ClientId 的基礎上給每個虛擬用戶再添加一個 uuid 串作為後綴,整個作為虛擬用戶標識。
Keep alive(s): 心跳信號發送間隔。例如,300 表示客戶端每隔 300 秒向伺服器發出 ping 請求,以保持連接活躍。
Connect attempt max: 第一次連接過程中,嘗試重連的最大次數。超過該次數則認為連接失敗。如果希望一直嘗試重連,可以設為 -1。
Reconnect attempt max: 後繼連接過程中,嘗試重連的最大次數。超過該次數則認為連接失敗。如果希望一直嘗試重連,可以設為 -1。
Clean session : 如果希望在連接之間保留會話狀態,可以將該選項設為 false。如果不希望在新的連接中保留會話狀態,則將該項設為true。
消息發布采樣器復用連接采樣器中建立的 MQTT 連接,向目標 MQTT 伺服器發布消息。
QoS Level: 服務質量,取值為 0,1,2,分別代表 MQTT 協議規范里的至多一次(AT_MOST_ONCE),至少一次(AT_LEAST_ONCE),精確一次(EXACTLY_ONCE)
Retained messages : 如果希望使用「保留消息」,可將該選項設為 true,MQTT 伺服器端將會存儲插件發布的保留消息及其 QoS,並在相應 topic 上發生訂閱時,直接將最後一條保留消息投遞給訂閱端,使得訂閱端不必等待即可獲取發布端的最新狀態值。
Topic name: 發布消息所屬的主題。
Add timestamp in payload: 如果勾選,發布的消息體開頭會附帶當前時間戳,配合消息訂閱采樣器的 Payload includes timestamp 選項,可以在消息接收端計算消息達到的延時。如果不勾選則只發送實際的消息體。
Payloads Message type: 目前支持三種消息類型
消息發布采樣器復用連接采樣器中建立的 MQTT 連接,從目標 MQTT 伺服器上訂閱消息。
QoS Level: 服務質量,含義與消息發布采樣器相同。
Topic name(s): 訂閱消息所屬的主題。支持單個消息訂閱采樣器訂閱多個主題,主題之間用逗號分隔。
Payload includes timestamp: 如果勾選,會從消息體開頭處解析發送時間戳,配合消息發布采樣器的 Add timestamp in payload 選項,可以用於計算消息的接收延時。如果不勾選則只解析實際的消息體。
Sample on : 采樣方式,默認為" specified elapsed time(ms) ",即每隔指定的毫秒時間采樣一次。也可以選擇" number of received messages ",即每接收到指定的消息數采樣一次。
Debug response: 如果勾選,消息內容會列印在 JMeter 的響應結果中。該選項主要用於調試目的,正式運行測試不建議勾選,以免影響測試效率。
斷開連接采樣器中建立的 MQTT 連接。
本文我們介紹了 JMeter MQTT 插件的各測試組件,在下期文章中我們將針對不同的測試場景詳細介紹如何用 MQTT 插件來構建測試腳本。