JMeter中的后端监听器的实现

目录
  • 一、JMeter后端监听器介绍
  • 二、github开源JMeter后端监听器
    • jmeter-backend-listener-kafka原理介绍
    • JMeter如何引入该jar

一、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来接收该上下文的参数

到此这篇关于JMeter中的后端监听器的实现的文章就介绍到这了,更多相关JMeter 后端监听器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 一文搞懂JMeter engine中HashTree的配置问题

    目录 一.前言 二.HashTree的用法 三.JMeter源码导出jmx脚本文件介绍 四.自定义HashTree生成JMeter脚本 一.前言 之前介绍了JMeter engine启动原理,但是里面涉及到HashTree这个类结构没有给大家详细介绍,这边文章就详细介绍JMeter engine里面的HashTree结构具体用来做什么 大家看到下面是JMeter控制台配置截图,是一个标准的菜单形式:菜单形式其实就类似于"树型"的数据结构,而HashTree其实就是一个树型数据结构 我们

  • jmeter-正则表达式实例讲解

    目录 实例1:从JDBC查询数据,并提取查询结果 实例3(简单):提取单个字符串 实例4(简单):提取多个字符串 实例5(简单):找到所有小数的数字,比如10.2 实例6(简单):找到所有小数点后的数字 实例7(简单):找到第一个有小数的数字 实例8(简单):找到所有小数的数字 正则表达式语法 过年前产假归来,jmeter很多知识生疏了,这两天打开jmeter摸索了几下,老了记不住,还是准备弄个jmeter系列随笔吧. 言归正传,使用jmeter时经常有这样的情况:一个完整的操作流程,需先完成某

  • 浅谈JMeter engine启动原理

    目录 一.简介 二.配置简介 三.开始原理讲解 四.JMeter 引擎启动链路图 一.简介 本文主要介绍jmeter在控制台在点击执行之后底层所做的一些主要事情及内容,由于便于断点调试采用GUI方式进行操作 二.配置简介 为了调试方便,采用单线程,方式访问百度(若多线程可能断点会看晕,后面会讲到) 三.开始原理讲解 首先GUI下点击执行,在ActionRouter该类下执行performAction()方法,该类为执行后续流程的入口 ActionRouter是一个监听器,用于监听GUI事件流变化

  • Jmeter逻辑控制器事务控制器使用方法解析

    一.基本概念: Transaction controller:一般是指要做的或所做的事情,在关系数据库一个事务可以是一条SQL语句,一组SQL语句或整个程序.在实际的工作过程中,将完成一个业务的一系列操作称作为事务,我们来举最为典型的用户登录场景为例. 从用户角度: 步骤一:用户打开应用系统的网址,呈现用户登录主页面 步骤二:输入自己的用户名与密码,点击登录按钮: 步骤三: 登录应用系统主页面. 从测试人员角度: 步骤一:用户打开应用系统的网址,呈现用户登录主页面 (客户端向WEB服务器发送一次

  • jmeter添加自定函数的实例(jmeter5.3+IntelliJ IDEA)

    1.打开IntelliJ IDEA,新建一个Maven项目 2.导入Jmeter的依赖包 在idea中导入jmeter下的ApacheJMeter_core.jar和ApacheJMeter_functions.jar依赖包 3.添加java自定义函数 要实现扩展JMeter function,主要有两点: 实现function的类的package声明必须包含".functions"需要继承org.apache.jmeter.functions.AbstractFunction,并且实

  • JMeter对数据库的查询操作步骤详解

    提示: 关于JMeter如何连接MySQL数据库,前面文章已经详解的讲解过了.因为配置数据库连接是比较固定的步骤,这里就不重复讲解了. 本篇文章主要详细说明,使用JDBC Request组件,如何对数据库进行查询的各种操作. JMeter中查询语句的操作步骤: 添加测试计划. 添加线程组,设置线程组的次数. 添加JDBC Connection Configuration组件,配置数据库连接. 添加JDBC Request请求,编写SQL语句,使用参数化.运行脚本,发送SQL请求. 添加察看结果树

  • Jmeter常见函数使用方法汇总

    __intSum intSum 函数可用于计算两个或多个整数值的总和. 引用名称是可选的, 但它不能是有效的整数. {__intSum(2,5,MYVAR)} 将返回 7 (2 5) 并将结果存储在 MYVAR 变量中.因此 {MYVAR} 将等于7. ${__intSum(2,5,7)} 将返回 14 (2 5 7) 并将结果存储在 MYVAR 变量中. {__intSum(1,2,5,${MYVAR})} 如果 MYVAR 值等于8.1 2 5 {MYVAR}, 则返回16 __longSu

  • JMeter中的后端监听器的实现

    目录 一.JMeter后端监听器介绍 二.github开源JMeter后端监听器 jmeter-backend-listener-kafka原理介绍 JMeter如何引入该jar 一.JMeter后端监听器介绍 说到JMeter后端监听器,必须要从源头BackendListener开始说,最后延伸到我们需要的BackendListenerClient,下面我们一一展开 BackendListener是啥? 源码简单介绍BackendListener是一种异步监听并获取到测试结果的实现类,也就是说

  • 浅析JAVA中过滤器、监听器、拦截器的区别

    1.过滤器:所谓过滤器顾名思义是用来过滤的,在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者struts的action前统一设置字符集,或者去除掉一些非法字符(聊天室经常用到的,一些骂人的话).filter 流程是线性的, url传来之后,检查之后,可保持原来的流程

  • Android在自定义类中实现自定义监听器方式

    监听器可以说是Android开发中最常用的东西之一.我们通过监听器可以监听对象的各种变化事件,并进行一些需要的处理,相当有用,而且使用起来也很简单.其实,监听器就相当于C++中的回调函数,达到条件就回调执行. 很多时候,我们在自定义控件类中也需要实现一些属性变化的监听器,实现跟原生控件监听器一样的功能.以下分几个步骤说明自定义监听器实现和使用(以自定义类MyClass加载完成监听器为例): 一.自定义监听器的实现: 1. 定义一个加载完成监听接口 //加载监听接口 public static i

  • 浅谈keras中的后端backend及其相关函数(K.prod,K.cast)

    一.K.prod prod keras.backend.prod(x, axis=None, keepdims=False) 功能:在某一指定轴,计算张量中的值的乘积. 参数 x: 张量或变量. axis: 一个整数需要计算乘积的轴. keepdims: 布尔值,是否保留原尺寸. 如果 keepdims 为 False,则张量的秩减 1. 如果 keepdims 为 True,缩小的维度保留为长度 1. 返回 x 的元素的乘积的张量. Numpy 实现 def prod(x, axis=None

  • Jmeter 中 CSV 如何参数化测试数据并实现自动断言示例详解

    当我们使用Jmeter工具进行接口测试,可利用CSV Data Set Config配置元件,对测试数据进行参数化,循环读取csv文档中每一行测试用例数据,来实现接口自动化.此种情况下,很多测试工程师只会人工地查看响应结果来判断用例是否通过. 其实我们同样可利用CSV Data Set Config来帮助我们实现自动断言. 思路:将每一条用例的预期结果一并保存在csv文档中,循环读取文档中的期望结果,来跟实际运行的结果进行一致性判断,高效实现接口自动化. 示例: 1.整理测试数据及预期结果的CS

  • jmeter中json提取器如何提取多个参数值

    关于jmeter中的正则表达式及json提取器可以提取响应值,大家都有所了解,但是往往我们在实际运用中,可能需要上个接口的多个响应值,难道我们要在jmeter中添加多个提取器吗?那么我们今天来了解下如何使用json提取器一次性提取多个参数值. json提取器提取多个值 以上是响应数据,我需要把这两个参数都提取出来传给下一个接口的请求,添加json提取器 关于json提取器参数介绍: names of created variables :接收值的变量名,多个变量时用分号分隔 json path:

  • 详解Jmeter中的BeanShell脚本

    在利用jmeter进行接口测试或者性能测试的时候,我们需要处理一些复杂的请求,此时就需要利用beanshell脚本了,BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法,所以它和java是可以无缝衔接的.beanshell由于内置了一些特有的变量,没法在一些集成代码工具上去调试. 学了Java的一些基本语法后,就可以来在Jmeter中写写BeanShell脚本了. 直接在线程组下创建一个BeanShell取样器,然后在脚本区写java代码: 写了个循环,执

  • Jmeter中正则表达式提取器使用详解

    目录 在使用Jmeter过程中,会经常使用到正则表达式提取器提取器,虽然并不直接涉及到请求的测试,但是对于数据的传递起着很大的作用,本篇博文就是主要讲解关于正则表达式及其在Jmeter的Sampler中的调用. 一.首先来介绍一下Jmeter中正则表达式提取器的元素组成,下图所示: 下面是各参数值的含义: 参数 释义 引用名称 在HTTP等请求中,引用此数据,需要用到的名称 正则表达式 用于将需要的数据提取出来 模板 表示使用提取到的第几个值: $1$:表示取第1个 $2$:表示取第二个 以此类

  • Java Web开发中过滤器和监听器使用详解

    目录 1 Filter 1.1 Filter简介 1.2 Filter的快速入门 1.2.1 创建Filter类 1.2.2 访问index.jsp 1.3 Filter的拦截路径的配置 1.4 过滤器链 1.4.1 过滤器链简介 1.4.2 过滤器链的例子 2 Listener 2.1 概念 2.2 监听器的使用 1 Filter 1.1 Filter简介 Filter表示过滤器,是JavaWeb三大组件(Servlet.Filter.Listener)之一. 过滤器可以把资源的请求拦截下来,

  • Jmeter中的timeshift()函数获取当前时间进行加减

    __TimeShift(格式,日期,移位,语言环境,变量): 可对日期进行移位加减操作 格式 - 将显示创建日期的格式. 如果该值未被传递,则以毫秒为单位创建日期. 日期 - 这是日期值.用于如果要通过添加或减去特定天数,小时或分钟来创建特定日期的情况.如果参数值未通过,则使用当前日期. 移位 -表示要从日期参数的值中添加或减去多少天,几小时或几分钟.如果该值未被传递,则不会将任何值减去或添加到日期参数的值中.如下所述: “PT20.345S”解析为“20.345秒” “PT15M”解析为“15

随机推荐