JMeter中的后端監(jiān)聽器的實(shí)現(xiàn)
一、JMeter后端監(jiān)聽器介紹
說(shuō)到JMeter后端監(jiān)聽器,必須要從源頭BackendListener開始說(shuō),最后延伸到我們需要的BackendListenerClient,下面我們一一展開
BackendListener是啥?
源碼簡(jiǎn)單介紹BackendListener是一種異步監(jiān)聽并獲取到測(cè)試結(jié)果的實(shí)現(xiàn)類,也就是說(shuō)測(cè)試(例如發(fā)出的HTTP請(qǐng)求的響應(yīng)結(jié)果,及請(qǐng)求數(shù)據(jù))都會(huì)被封裝在SampleResult對(duì)象中并被其監(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有什么用?
由于它是異步接收壓測(cè)元數(shù)據(jù)的,會(huì)將測(cè)試結(jié)果的元數(shù)據(jù)傳給BackendListenerClient,后面的核心都是BackendListenerClient
BackendListenerClient,AbstractBackendListenerClient介紹
BackendListenerClient是一個(gè)接口類,通過(guò)抽象類AbstractBackendListenerClient來(lái)擴(kuò)展其功能,我們要獲取到測(cè)試元數(shù)據(jù)都要通過(guò)繼承AbstractBackendListenerClient來(lái)實(shí)現(xiàn),包括JMeter原生自帶的influxdb、graphite都是通過(guò)繼承AbstractBackendListenerClient來(lái)獲取元數(shù)據(jù)的
繼承AbstractBackendListenerClient需要實(shí)現(xiàn)三種方法
public interface BackendListenerClient { //開啟多線程執(zhí)行壓測(cè)之前,傳入線程上下文,進(jìn)行前置處理 void setupTest(BackendListenerContext context) throws Exception; // NOSONAR //多線程壓測(cè)過(guò)程中獲取到測(cè)試結(jié)果集,傳入當(dāng)前方法進(jìn)行處理 void handleSampleResults(List<SampleResult> sampleResults, BackendListenerContext context); //多線程壓測(cè)結(jié)束之后進(jìn)行一個(gè)后置處理 void teardownTest(BackendListenerContext context) throws Exception; }
二、github開源JMeter后端監(jiān)聽器
jmeter-backend-listener-kafka原理介紹
jmeter-backend-listener-kafka其實(shí)就是通過(guò)繼承AbstractBackendListenerClient來(lái)將異步獲取到的測(cè)試結(jié)果集SampleResult進(jìn)行相應(yīng)處理,然后將元數(shù)據(jù)上報(bào)至kakfa,這樣你通過(guò)消費(fèi)kafka Topic異步來(lái)接收測(cè)試結(jié)果集
通過(guò)實(shí)現(xiàn)的handleSampleResults方法來(lái)處理數(shù)據(jù)并上報(bào)至kafka
JMeter如何引入該jar
進(jìn)入到github該開源代碼,下載最新的解壓包
將下載壓縮包對(duì)應(yīng)的jar放入JMeter項(xiàng)目應(yīng)用目錄下的\lib\ext ,JMeter擴(kuò)展包都是存放在ext目錄
打開JMeter控制臺(tái)你就能看到后端監(jiān)聽器多了該選項(xiàng)
同時(shí)面板填入對(duì)應(yīng)kafka地址及topic后,運(yùn)行壓測(cè)就會(huì)將測(cè)試結(jié)果集上報(bào)至kafka并接收,同時(shí)面板支持額外填寫對(duì)應(yīng)的Key-Value數(shù)據(jù),因?yàn)檫@都可以通過(guò)BackendListenerContext來(lái)接收該上下文的參數(shù)
到此這篇關(guān)于JMeter中的后端監(jiān)聽器的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)JMeter 后端監(jiān)聽器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot中的MongoTemplate的各種條件查詢示例詳解
這篇文章主要介紹了SpringBoot中的MongoTemplate的各種條件查詢示例詳解,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借價(jià)值,需要的朋友參考下吧2024-01-01Spring Boot 與 Kotlin 使用JdbcTemplate連接MySQL數(shù)據(jù)庫(kù)的方法
本文介紹在Spring Boot基礎(chǔ)下配置數(shù)據(jù)源和通過(guò) JdbcTemplate 編寫數(shù)據(jù)訪問(wèn)的示例。感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-01-01java中public class與class的區(qū)別詳解
以下是對(duì)java中public class與class的區(qū)別進(jìn)行了分析介紹,需要的朋友可以過(guò)來(lái)參考下2013-07-07java實(shí)現(xiàn)簡(jiǎn)單的英文文本單詞翻譯器功能示例
這篇文章主要介紹了java實(shí)現(xiàn)簡(jiǎn)單的英文文本單詞翻譯器功能,涉及java文件讀取、字符串分割、遍歷、判斷等相關(guān)操作技巧,需要的朋友可以參考下2017-10-10微信小程序錄音文件格式silk遇到的問(wèn)題及解決方法
錄音文件為silk格式,說(shuō)是silk其實(shí)是base64加密后的webm格式,只需將其轉(zhuǎn)為webm格式即可。但是在處理過(guò)程中遇到各種坑,下面小編給大家?guī)?lái)了微信小程序錄音文件格式silk遇到的問(wèn)題及解決方法,感興趣的朋友一起看看吧2018-09-09

關(guān)于Java創(chuàng)建線程的2種方式以及對(duì)比

SpringCloud Hystrix-Dashboard儀表盤的實(shí)現(xiàn)