JMeter中的后端监听器的实现

一、JMeter后端监听器介绍

说到JMeter后端监听器,必须要从源头BackendListener开始说,最后延伸到我们需要的BackendListenerClient,下面我们一一展开

BackendListener是啥?
源码简单介绍BackendListener是一种异步监听并获取到测试结果的实现类,也就是说测试(例如发出的HTTP请求的响应结果,及请求数据)都会被封装在SampleResult对象中并被其监听接收

1

2

3

4

5

6

7

8

9

/**

 * 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需要实现三种方法

1

2

3

4

5

6

7

8

9

10

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

在这里插入图片描述

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
qq群号:485187702【暗号:csdn11】
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值