当前位置: 首页 > news >正文

使用Jmeter压测dubbo接口(不依赖dubbo插件)

1、dubbo 依赖

<dependencies>  
    <!-- Dubbo -->  
    <dependency>  
        <groupId>org.apache.dubbo</groupId>  
        <artifactId>dubbo</artifactId>  
        <version>2.7.8</version>  
    </dependency>  
    <!-- Zookeeper客户端 -->  
    <dependency>  
        <groupId>org.apache.curator</groupId>  
        <artifactId>curator-framework</artifactId>  
        <version>4.3.0</version>  
    </dependency>  
    <!-- Zookeeper客户端的Dubbo支持 -->  
    <dependency>  
        <groupId>org.apache.dubbo</groupId>  
        <artifactId>dubbo-dependencies-zookeeper</artifactId>  
        <version>2.7.8</version>  
        <type>pom</type>  
    </dependency>  
    <!-- 其他依赖,如日志等 -->  
</dependencies>

2、继承AbstractJavaSamplerClient

import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;  
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;  
import org.apache.jmeter.samplers.SampleResult;  
import org.apache.dubbo.config.ApplicationConfig;  
import org.apache.dubbo.config.ReferenceConfig;  
import org.apache.dubbo.rpc.service.GenericService;  
  
public class DubboGenericSampler extends AbstractJavaSamplerClient {  
  
    private GenericService genericService;  
  
    @Override  
    public void setupTest(JavaSamplerContext context) {  
        // 在测试开始前初始化Dubbo客户端  
        ApplicationConfig application = new ApplicationConfig("jmeter-dubbo-client");  
        ReferenceConfig<GenericService> reference = new ReferenceConfig<>();  
        reference.setApplication(application);  
        reference.setRegistry("zookeeper://127.0.0.1:2181");  
        reference.setInterface("com.example.DemoService");  
        reference.setGeneric(true);  
          
        // 初始化泛化服务  
        genericService = reference.get();  
    }  
  
    @Override  
    public SampleResult sample(JavaSamplerContext context) {  
        SampleResult results = new SampleResult();  
        results.setSampleLabel("Dubbo Generic Call");  
  
        try {  
            // 调用Dubbo服务  
            Object result = genericService.$invoke("sayHello",  
                    new String[]{"java.lang.String"},  
                    new Object[]{"World"});  
  
            results.setSuccessful(true);  
            results.setResponseData(String.valueOf(result).getBytes());  
            results.setResponseMessage("Success");  
        } catch (Exception e) {  
            results.setSuccessful(false);  
            results.setResponseMessage("Error: " + e.getMessage());  
            e.printStackTrace();  
        }  
  
        return results;  
    }  
  
    @Override  
    public void teardownTest(JavaSamplerContext context) {  
        // 清理资源,例如关闭Dubbo连接等(如果需要的话)  
        // 注意:Dubbo的ReferenceConfig通常不需要显式关闭,但如果有其他资源需要清理,请在这里进行  
    }  
}

3、打成jar包并跟jmeter结合

3. 将JAR文件放入JMeter的lib/ext目录
将编译好的JAR文件放入JMeter安装目录下的lib/ext文件夹中。这样,当JMeter启动时,它会自动加载这个JAR文件,并使其中的Sampler可用。

4. 重启JMeter
每次向lib/ext目录添加新的JAR文件后,都需要重启JMeter以确保它能够识别并加载新的Sampler。

5. 在JMeter中添加Sampler
重启JMeter后,按照以下步骤在测试计划中添加你的Sampler:

右键点击测试计划或线程组,选择“添加” -> “取样器” -> “Java请求”(注意:虽然这里可能看不到你自定义Sampler的具体名称,但所有继承自AbstractJavaSamplerClient的Sampler都会通过“Java请求”这个通用选项添加)。
在打开的Java请求界面中,你会看到一个“类名”字段。在这个字段中,输入你的Sampler类的完全限定名(包括包名),例如com.example.jmeter.DubboGenericSampler。
点击“应用”或“确定”保存设置。


http://www.mrgr.cn/news/13816.html

相关文章:

  • EmguCV学习笔记 VB.Net 6.6 图像的矩
  • Jenkins安装使用详解,jenkins实现企业级CICD流程
  • Elasticsearch的部署和使用
  • 「养宠干货」为什么猫咪吃罐头更好?高性价比主食罐推荐
  • vue3中批量下载文件(压缩包)功能
  • 矩阵分块乘法的证明
  • 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch12 随机森林(Random Forest)
  • 基于协同过滤算法Spring Boot+Vue的图书商城系统
  • ## 已解决:亲测有效的 org.xml.sax.SAXNotRecognizedException 异常解决方法
  • 独家!汕尾广投荣得ICAS英格尔认证颁发的ESG认证,引爆基建行业绿色革命浪潮
  • 微服务面试题
  • 【Rust光年纪】深度解读:Rust语言中各类消息队列客户端库详细对比
  • FastAPI vs Flask: 专业对比与选择
  • javaEE
  • 回归分析系列14.2— 正则化回归
  • CSS(层叠样式表)
  • 游戏开发的双刃剑:Visual Basic在游戏开发中的局限与机遇
  • Python知识点:如何使用Elasticsearch与Elasticsearch-py进行全文检索
  • PLM系统实施有哪些特点?有哪些具体实施步骤?
  • 损失函数与反向传播