一、JMeter后端監聽器介紹
說到JMeter后端監聽器,必須要從源頭BackendListener開始說,最后延伸到我們需要的BackendListenerClient,下面我們一一展開
BackendListener是啥?
源碼簡單介紹BackendListener是一種異步監聽并獲取到測試結果的實現類,也就是說測試(例如發出的HTTP請求的響應結果,及請求數據)都會被封裝在SampleResult對象中并被其監聽接收
/** * 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實現了SampleListener接口,而SampleListener在JMeterThread類中被使用到
BackendListener有什么用?
由于它是異步接收壓測元數據的,會將測試結果的元數據傳給BackendListenerClient,后面的核心都是BackendListenerClient
BackendListenerClient,AbstractBackendListenerClient介紹
BackendListenerClient是一個接口類,通過抽象類AbstractBackendListenerClient來擴展其功能,我們要獲取到測試元數據都要通過繼承AbstractBackendListenerClient來實現,包括JMeter原生自帶的influxdb、graphite都是通過繼承AbstractBackendListenerClient來獲取元數據的
繼承AbstractBackendListenerClient需要實現三種方法
public interface BackendListenerClient { //開啟多線程執行壓測之前,傳入線程上下文,進行前置處理 void setupTest(BackendListenerContext context) throws Exception; // NOSONAR //多線程壓測過程中獲取到測試結果集,傳入當前方法進行處理 void handleSampleResults(List<SampleResult> sampleResults, BackendListenerContext context); //多線程壓測結束之后進行一個后置處理 void teardownTest(BackendListenerContext context) throws Exception; }
二、github開源JMeter后端監聽器
jmeter-backend-listener-kafka原理介紹
jmeter-backend-listener-kafka其實就是通過繼承AbstractBackendListenerClient來將異步獲取到的測試結果集SampleResult進行相應處理,然后將元數據上報至kakfa,這樣你通過消費kafka Topic異步來接收測試結果集
通過實現的handleSampleResults方法來處理數據并上報至kafka
JMeter如何引入該jar
進入到github該開源代碼,下載最新的解壓包
將下載壓縮包對應的jar放入JMeter項目應用目錄下的\lib\ext ,JMeter擴展包都是存放在ext目錄
打開JMeter控制臺你就能看到后端監聽器多了該選項
同時面板填入對應kafka地址及topic后,運行壓測就會將測試結果集上報至kafka并接收,同時面板支持額外填寫對應的Key-Value數據,因為這都可以通過BackendListenerContext來接收該上下文的參數
到此這篇關于JMeter中的后端監聽器的實現的文章就介紹到這了,更多相關JMeter 后端監聽器內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_40686603/article/details/114627465