本文章出自【
碼同學軟體測試
】
碼同學公眾號:自動化軟體測試
碼同學抖音號:
小碼哥聊軟體測試
在網際網路企業技術架構中,
MQ佔據了越來越重要的地位
。系統解耦、非同步通訊、
削峰填谷
、資料順序保證等場景中,到處都能看到MQ的身影。
而測試工程師在工作中,也經常需要和mq打交道,比如構造測試資料,觸發某些業務場景,以及針對mq的效能測試等。
目前業界中比較知名的mq產品有
kafka、rabbitmq、rocketmq
等。今天我主要來介紹下如何使用Jmeter來向rocketmq傳送訊息,實現對mq發訊息功能的效能測試。
先來簡單介紹下Rocketmq
RocketMQ 是一款分散式、佇列模型的訊息中介軟體,是阿里巴巴集團自主研發的專業訊息中介軟體,歷經多次天貓雙十一海量訊息考驗。目前已經捐贈給Apache基金會,並於2016年11月成為Apache 孵化專案。
1 MQ基本概念
Message:訊息,訊息佇列中資訊傳遞的載體
Topic:訊息主題,一級訊息型別,透過 Topic 對訊息進行分類
Tag:訊息標籤,二級訊息型別,用來進一步區分某個 Topic 下的訊息分類
Producer:訊息生產者,也稱為訊息釋出者,負責生產併發送訊息
Consumer:訊息消費者,也稱為訊息訂閱者,負責接收並消費訊息
2 RocketMQ 的 4 個元件
分別是 nameserver、broker、producer 和 consumer
Broker: 叢集最核心模組,主要負責 Topic 訊息儲存、消費者的消費位點管理(消費進度)Producer: 訊息生產者,每個生產者都有一個 ID(編號)
nameserver: 儲存當前叢集所有 Brokers 資訊、Topic 跟 Broker 的對應關係
Consumer: 訊息消費者,每個訂閱者也有一個 ID(編號)
3 MQ訊息收發模型
理解上面幾個概念後,我們來編寫Jmeter指令碼。
在idea中建立一個Java工程,並引入Rocketmq和Jmeter的依賴包,先編寫一個demo指令碼。Rocketmq的訊息傳送程式碼非常的簡單,幾行程式碼輕鬆搞定,程式碼如下:
執行指令碼,可以看到列印的結果“SEND_OK”字樣,代表訊息傳送成功。
免費領取
碼同學軟體測試
課程筆記+超多學習資料+完整影片+最新面試題,可以
轉發文章 + 私信「碼同學666」獲取資料哦
登入到rocketmq控制檯頁面,可以搜尋到剛才傳送的訊息。
到目前為止,測試指令碼已經除錯透過,只需要將指令碼轉換為Jmeter的指令碼即可。具體分為以下幾步:
1、 建立一個測試類,實現Jmeter的JavaSamplerClient介面,需要實現介面中的4個方法,分別為:
setupTest:指令碼的初始化操作,每個執行緒啟動時執行,且僅執行一次
runTest:Jmeter執行緒迴圈執行的方法
teardownTest:Jmeter結束方法,每個執行緒結束時執行,且僅執行一次
getDefaultParameters:需要暴露在Jmeter介面中的引數,本文中暫時不需要
根據四個方法的特點,將對應的mq程式碼操作放到不同方法中,詳細解釋可見註釋程式碼如下:
2、 將Java指令碼及其依賴包匯出為jar包,然後放到jmeter的lib/ext目錄下
3、 開啟Jmeter,新建“Java請求”,選擇剛才的寫的指令碼類
4、 在檢視結果樹中檢視執行結果,可以看到“SEND_OK”等字樣,代表傳送訊息成功了。
就這樣,一個基於Jmeter的傳送MQ訊息指令碼就完成了,如果想做壓測的話,在Jmeter裡配置上執行緒數和持續時間就可以開始壓測了。
END
免費領取
碼同學軟體測試
課程筆記+超多學習資料+學習完整影片,可以關注我們公眾號哦:自動化軟體測試
本文著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。