在互聯網企業技術架構中,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”字樣,代表消息發送成功。
登錄到rocketmq控制台頁面,可以搜索到剛才發送的消息。
到目前為止,測試腳本已經調試通過,只需要將腳本轉換為Jmeter的腳本即可。具體分為以下幾步:
1、 創建一個測試類,實現Jmeter的JavaSamplerClient接口,需要實現接口中的4個方法,分別為:
setupTest:腳本的初始化操作,每個線程啟動時執行,且僅執行一次
runTest:Jmeter線程循環執行的方法
teardownTest:Jmeter結束方法,每個線程結束時執行,且僅執行一次
getDefaultParameters:需要暴露在Jmeter界面中的參數,本文中暫時不需要
根據四個方法的特點,將對應的mq代碼操作放到不同方法中,詳細解釋可見注釋代碼如下:
2、 將Java腳本及其依賴包導出為jar包,然后放到jmeter的lib/ext目錄下
3、 打開Jmeter,新建“Java請求”,選擇剛才的寫的腳本類
就這樣,一個基於Jmeter的發送MQ消息腳本就完成了,如果想做壓測的話,在Jmeter里配置上線程數和持續時間就可以開始壓測了。
轉載於: