JMeter中的后端 * 的实现
作者:HenryXiao8080 发布时间:2022-07-24 17:58:35
一、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原理介绍
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来接收该上下文的参数
来源:https://blog.csdn.net/weixin_40686603/article/details/114627465


猜你喜欢
- GridView基础新建一个HelloGridView的工程修改main.xml代码如下:<?xml version="1.
- 在c#中怎样调用VC写的OCX控件,主要有两个关键环节两个关键环节:导入ocx控件,创建实例。1 注册ocx:regsvr32.exe al
- 一、前言我们经常会接触各种池化的技术或者概念,包括对象池、连接池、线程池等,池化技术最大的好处就是实现对象的重复利用,尤其是创建和使用大对象
- Android开发中少不了真机调试,总用数据线 * 拔拔的还是不方便也不稳定,其实可以实现WIFI的方式连接android手机。 &
- 前言有时线上问题我们用打日志的方式来观察错误或埋点参数,但由于这些日志如果都打出来会占用大量存储空间而且覆盖了一些有效信息,所以线上级别一般
- springboot aop里的@Pointcut()的配置@Pointcut("execution(public * com.w
- 本文实例讲述了Hibernate实现批量添加数据的方法。分享给大家供大家参考,具体如下:1.Hibernate_016_Ba
- 真正的帮助大家理解红黑树:一、红黑树所处数据结构的位置:在JDK源码中, 有treeMap和JDK8的HashMap都用到了红黑树去存储红黑
- 实现功能实现使用FTP上传、下载、重命名、刷新、删除功能开发环境开发工具: Visual Studio 2013.NET Framework
- 需求基于MTK8163 8.1平台定制导航栏部分,在左边增加音量减,右边增加音量加思路需求开始做之前,一定要研读SystemUI Navig
- 做直播,音视频通讯。经常需要通过rtp协议封装音视频数据来发送。网上找到的基本都是c或c++版本的,没有JAVA版本的。就算千辛万苦找到一篇
- 为什么需要将webView放在独立进程webView 加载网页的时候可能占用大量内存,导致应用程序OOM。webView 在访问结束的时候可
- Java基本类型与byte数组之间相互转换,刚刚写的package cn.teaey.utils;import java.nio.chars
- 查看apiDemos,找到View/Animation/shake找到对应的动画代码,直接拷贝过来当导入一个项目的时候,报R文件不存在,很多
- 1.汉诺塔介绍汉诺塔规则1.有三根杆子A,B,C。A杆上有若干碟子2.每次移动一块碟子,小的只能叠在大的上面3.把所有碟子从A杆全部移到C杆
- mybatis的原身是ibatis,现在已经脱离了apache基金会,新官网是http://www.mybatis.org/。在研究Myba
- 众所周知springboot项目,使用springboot插件打包的话,会打包成一个包含依赖的可执行jar,非常方便。只要有java运行环境
- mybatis Integer类型参数动态sql注意条件例如以下拼接的动态sql<if test="work_status
- 本文实例为大家分享了Android自定义圆环倒计时控件的具体代码,供大家参考,具体内容如下先来一张最终效果图:主要思路: 在画渐变
- Spring5路径匹配器PathPatternPathPattern 对url地址匹配的处理更加快速,它和AntPathMatcher 主要