基於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腳本。

在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里配置上線程數和持續時間就可以開始壓測了。

 轉載於:自動化軟件測試公眾號-北河老師編寫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM