JMeter 插件:实现线程组 TraceId 记录,构建调用链
首先,我们需要创建一个 JMeter 插件项目。可以使用 Maven 构建一个 Java 项目,并在 pom.xml 文件中添加以下依赖项:
<dependencies>
<dependency>
<groupId>kg.apc</groupId>
<artifactId>jmeter-plugins-casutg</artifactId>
<version>2.9</version>
</dependency>
<dependency>
<groupId>kg.apc</groupId>
<artifactId>jmeter-plugins-cmn-jmeter</artifactId>
<version>0.6</version>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_core</artifactId>
<version>5.4.1</version>
</dependency>
</dependencies>
然后,我们需要创建一个实现 JMeter Test Element 接口的类,可以称之为 TraceSampler。TraceSampler 需要实现以下方法:
@Override
public SampleResult sample(Entry entry) {
// 获取当前线程的 TraceId
String traceId = TraceContext.getCurrentTraceId();
// 创建一个 SampleResult 对象
SampleResult result = new SampleResult();
// 设置 SampleResult 对象的属性
result.setSampleLabel(getName());
result.setSuccessful(true);
result.setResponseCodeOK();
result.setResponseMessage('OK');
result.setSamplerData(traceId);
// 返回 SampleResult 对象
return result;
}
@Override
public void addTestElement(TestElement el) {
// 不需要实现
}
@Override
public void sampleOccurred(SampleEvent event) {
// 不需要实现
}
@Override
public void clear() {
// 不需要实现
}
@Override
public void setName(String name) {
super.setName(name);
}
在 TraceSampler 类中,我们使用 TraceContext.getCurrentTraceId() 获取当前线程的 TraceId。然后,我们将 TraceId 作为 SampleResult 对象的 samplerData 属性设置。这样,每次执行线程组时,我们都可以看到当前线程的 TraceId。还可以将 TraceId 作为 HTTP 请求的请求头发送到下游系统,实现调用链效果。
最后,需要将 TraceSampler 类打包成一个 jar 文件,并将它放置在 JMeter 的 lib/ext 目录下。启动 JMeter 后,在测试计划中添加一个 TraceSampler 元素,然后执行线程组,即可看到 TraceId 的输出。
原文地址: https://www.cveoy.top/t/topic/ojK5 著作权归作者所有。请勿转载和采集!