JMeter中的后端監(jiān)聽器的實(shí)現(xiàn)
一、JMeter后端監(jiān)聽器介紹
說到JMeter后端監(jiān)聽器,必須要從源頭BackendListener開始說,最后延伸到我們需要的BackendListenerClient,下面我們一一展開
BackendListener是啥?
源碼簡單介紹BackendListener是一種異步監(jiān)聽并獲取到測試結(jié)果的實(shí)現(xiàn)類,也就是說測試(例如發(fā)出的HTTP請求的響應(yīng)結(jié)果,及請求數(shù)據(jù))都會被封裝在SampleResult對象中并被其監(jiān)聽接收
/** * Async Listener that delegates SampleResult handling to implementations of {@link BackendListenerClient} * * @since 2.13 */ public class BackendListener extends AbstractTestElement implements Backend, Serializable, SampleListener, TestStateListener, NoThreadClone, Remoteable { }
為什么BackendListener能接收SampleResult?
由于BackendListener實(shí)現(xiàn)了SampleListener接口,而SampleListener在JMeterThread類中被使用到
BackendListener有什么用?
由于它是異步接收壓測元數(shù)據(jù)的,會將測試結(jié)果的元數(shù)據(jù)傳給BackendListenerClient,后面的核心都是BackendListenerClient
BackendListenerClient,AbstractBackendListenerClient介紹
BackendListenerClient是一個接口類,通過抽象類AbstractBackendListenerClient來擴(kuò)展其功能,我們要獲取到測試元數(shù)據(jù)都要通過繼承AbstractBackendListenerClient來實(shí)現(xiàn),包括JMeter原生自帶的influxdb、graphite都是通過繼承AbstractBackendListenerClient來獲取元數(shù)據(jù)的
繼承AbstractBackendListenerClient需要實(shí)現(xiàn)三種方法
public interface BackendListenerClient { //開啟多線程執(zhí)行壓測之前,傳入線程上下文,進(jìn)行前置處理 void setupTest(BackendListenerContext context) throws Exception; // NOSONAR //多線程壓測過程中獲取到測試結(jié)果集,傳入當(dāng)前方法進(jìn)行處理 void handleSampleResults(List<SampleResult> sampleResults, BackendListenerContext context); //多線程壓測結(jié)束之后進(jìn)行一個后置處理 void teardownTest(BackendListenerContext context) throws Exception; }
二、github開源JMeter后端監(jiān)聽器
jmeter-backend-listener-kafka原理介紹
jmeter-backend-listener-kafka其實(shí)就是通過繼承AbstractBackendListenerClient來將異步獲取到的測試結(jié)果集SampleResult進(jìn)行相應(yīng)處理,然后將元數(shù)據(jù)上報至kakfa,這樣你通過消費(fèi)kafka Topic異步來接收測試結(jié)果集
通過實(shí)現(xiàn)的handleSampleResults方法來處理數(shù)據(jù)并上報至kafka
JMeter如何引入該jar
進(jìn)入到github該開源代碼,下載最新的解壓包
將下載壓縮包對應(yīng)的jar放入JMeter項目應(yīng)用目錄下的\lib\ext ,JMeter擴(kuò)展包都是存放在ext目錄
打開JMeter控制臺你就能看到后端監(jiān)聽器多了該選項
同時面板填入對應(yīng)kafka地址及topic后,運(yùn)行壓測就會將測試結(jié)果集上報至kafka并接收,同時面板支持額外填寫對應(yīng)的Key-Value數(shù)據(jù),因為這都可以通過BackendListenerContext來接收該上下文的參數(shù)
到此這篇關(guān)于JMeter中的后端監(jiān)聽器的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)JMeter 后端監(jiān)聽器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot中的MongoTemplate的各種條件查詢示例詳解
這篇文章主要介紹了SpringBoot中的MongoTemplate的各種條件查詢示例詳解,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借價值,需要的朋友參考下吧2024-01-01Spring Boot 與 Kotlin 使用JdbcTemplate連接MySQL數(shù)據(jù)庫的方法
本文介紹在Spring Boot基礎(chǔ)下配置數(shù)據(jù)源和通過 JdbcTemplate 編寫數(shù)據(jù)訪問的示例。感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-01-01java中public class與class的區(qū)別詳解
以下是對java中public class與class的區(qū)別進(jìn)行了分析介紹,需要的朋友可以過來參考下2013-07-07java實(shí)現(xiàn)簡單的英文文本單詞翻譯器功能示例
這篇文章主要介紹了java實(shí)現(xiàn)簡單的英文文本單詞翻譯器功能,涉及java文件讀取、字符串分割、遍歷、判斷等相關(guān)操作技巧,需要的朋友可以參考下2017-10-10關(guān)于elasticsearch的match_phrase_prefix查詢詳解
這篇文章主要介紹了關(guān)于elasticsearch的match_phrase_prefix查詢問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03關(guān)于Java創(chuàng)建線程的2種方式以及對比
這篇文章主要給大家介紹了關(guān)于Java創(chuàng)建線程的2種方式以及對比的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-01-01SpringCloud Hystrix-Dashboard儀表盤的實(shí)現(xiàn)
這篇文章主要介紹了SpringCloud Hystrix-Dashboard儀表盤的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08