基於Jmeter實現Rocketmq訊息傳送

本文章出自【

碼同學軟體測試

碼同學公眾號:自動化軟體測試

碼同學抖音號:

小碼哥聊軟體測試

在網際網路企業技術架構中,

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實現Rocketmq訊息傳送

理解上面幾個概念後,我們來編寫Jmeter指令碼。

在idea中建立一個Java工程,並引入Rocketmq和Jmeter的依賴包,先編寫一個demo指令碼。Rocketmq的訊息傳送程式碼非常的簡單,幾行程式碼輕鬆搞定,程式碼如下:

基於Jmeter實現Rocketmq訊息傳送

執行指令碼,可以看到列印的結果“SEND_OK”字樣,代表訊息傳送成功。

免費領取

碼同學軟體測試

課程筆記+超多學習資料+完整影片+最新面試題,可以

轉發文章 + 私信「碼同學666」獲取資料哦

登入到rocketmq控制檯頁面,可以搜尋到剛才傳送的訊息。

基於Jmeter實現Rocketmq訊息傳送

到目前為止,測試指令碼已經除錯透過,只需要將指令碼轉換為Jmeter的指令碼即可。具體分為以下幾步:

1、 建立一個測試類,實現Jmeter的JavaSamplerClient介面,需要實現介面中的4個方法,分別為:

setupTest:指令碼的初始化操作,每個執行緒啟動時執行,且僅執行一次

runTest:Jmeter執行緒迴圈執行的方法

teardownTest:Jmeter結束方法,每個執行緒結束時執行,且僅執行一次

getDefaultParameters:需要暴露在Jmeter介面中的引數,本文中暫時不需要

根據四個方法的特點,將對應的mq程式碼操作放到不同方法中,詳細解釋可見註釋程式碼如下:

基於Jmeter實現Rocketmq訊息傳送

2、 將Java指令碼及其依賴包匯出為jar包,然後放到jmeter的lib/ext目錄下

基於Jmeter實現Rocketmq訊息傳送

3、 開啟Jmeter,新建“Java請求”,選擇剛才的寫的指令碼類

基於Jmeter實現Rocketmq訊息傳送

4、 在檢視結果樹中檢視執行結果,可以看到“SEND_OK”等字樣,代表傳送訊息成功了。

基於Jmeter實現Rocketmq訊息傳送

就這樣,一個基於Jmeter的傳送MQ訊息指令碼就完成了,如果想做壓測的話,在Jmeter裡配置上執行緒數和持續時間就可以開始壓測了。

END

免費領取

碼同學軟體測試

課程筆記+超多學習資料+學習完整影片,可以關注我們公眾號哦:自動化軟體測試

本文著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。