前面的章节只是讲解了单个插件的使用方法,接下来的章节才是真正的混合使用的实战部分。
首先必须确保Dubbo服务已正常开启,然后拿到接口文档或项目源码,最后还要拿到服务器的地址和端口号(即Dubbo服务所在的地址而不是ZK等中间件的地址)。
假设接口类名为TestService,方法名为createTestCustomer,入参对象为RequestDTO,返回对象为Response,那么一般我们所说的接口名就为TestService.createTestData,主要功能为开户,至于具体实现是怎样在这里我们就不管了,代码看起来会像这样:
public interface TestService {
/**
* 开户
*/
Response createTestCustomer(RequestDTO);
}
@Setter
@Getter
@ToString
public class RequestDTO implements Serializable {
private static final long serialVersionUID = 1L;
private String reqData;
private String logId;
}
@Setter
@Getter
@ToString
public class Response<T> implements Serializable {
private static final long serialVersionUID = 1L;
private boolean success;
private T result;
private String errorCode;
private String errorMsg;
}
一、组装报文
首先要Telnet调用接口的话,我们还需要接口报文,其实只要有接口文档或源码,根据Java对象的类型和Json的转换规则就能知道接口报文,直接上例子,我们TestService.createTestData接口的报文会像这样子:
TestService.createTestCustomer({"reqData":"xxx","logId":"xxx"})
如果入参是多个对象的话,代码像这样:
public interface TestService {
Response createTestCustomer(RequestDTO, RequestDTO, String someData);
}
那么接口报文就为如下:
TestService.createTestCustomer({"reqData":"xxx","logId":"xxx"},{"reqData":"xxx","logId":"xxx"},"dataxxx")
二、手动Telnet调用接口
以Windows平台为例,首先确保Windows打开了Telnet服务,打开终端软件(cmd、Xshell等)。
第一步连接服务器:
telnet 127.0.0.1 20880
telnet成功将出现如下提示符:
dubbo>
第二步发送接口报文:
invoke TestService.createTestCustomer({"reqData":"xxx","logId":"xxx"})
调用成功之后就能看到响应报文了。
三、使用JMeter调用接口
全文将基于JMeter 3.1版本进行讲解,截至发稿为止JMeter最高版本为5.0,如使用高版本的JMeter可能会有jar包冲突或不兼容的情况。以下将逐步讲解:
1)确保DubboTelnet、ENV Data Set和Local Html Report的插件jar包已经放到JMeterHome/lib/ext目录下。
2)在JMeterHome目录下新建config目录,在config目录下新建test-1.env配置文件和test-2.env配置文件,配置文件内容如下:
test-1.env配置文件:
{
"service_address":"127.0.0.1:20880",
"db_url_cif":"xxx",
"db_user_khtx":"xxx",
"db_pwd":"xxx"
}
test-2.env配置文件:
{
"service_address":"127.0.0.2:20880",
"db_url_cif":"xxx",
"db_user_khtx":"xxx",
"db_pwd":"xxx"
}
3)打开JMeter,右键【测试计划(TestPlan)】添加以下组件:
- 【配置元件 - ENV Data Set】
- 【监听器 - Local Html Report】
- 【Threads(Users) - 线程组】
- 线程组下添加【Sampler - Java请求】和【监听器 - 察看结果树】
现在界面看起来像这样:
4)点击ENV Data Set组件,ConfigName选择test-1.env,现在界面看起来像这样:
5)点击Local Html Report组件,ReportName填入testreport.html,IsAppend选择false,现在界面看起来像这样:
6)点击Java请求组件,类名称选择【org.apache.jmeter.samplers.DubboTelnet】,依次填写各个属性值
- address=${service_address}
- interface=TestService.createTestData
- params={"reqData":"xxx","logId":"xxx"}
- expection="success":true
现在界面看起来像这样:
7)最后右键【线程组】点击【start】 就开始运行了,运行成功后,在【查看结果树】组件里就能查看详细的测试数据了。
8)如果添加了【Local Html Report】组件,在执行完jmx脚本后,在JMeterHome/htmlreport目录下会生产当前脚本的测试报告,测试报告名称就是第5步我们设置的ReportName,打开测试报告就能查看所有线程组的测试数据:
以上就是一个完整的JMeter dubbo接口脚本编写步骤。