• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Eleven-小白
博客园    首页    新随笔    联系   管理    订阅  订阅
jmeter+dubbo接口开发

jmeter+dubbo接口开发

1、在自己安装的Linux机器上面安装zookeeper服务
    1) 在data路径下使用输入命令:wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz 
        如果没有wget命令,使用yum进行下载:( yum install wget* -y)
 
    2)tar  -zxvf文件名
        tar -zxvf zookeeper-3.4.14.tar.gz
 
   3)在zookeeper的主路径下新建下面两个文件名
        mkdir {logs,data},这个命令一下子创建两个文件夹
 
   4)进入到conf目录下,修改zookeeper配置文件(备份一个,防止设置错误,无法恢复)
       备份文件命令: cp zoo_sample.cfg   zoo.cfg
       修改配置文件zoo.cfg:vim zoo.cfg
        在配置文件的tickTime=2000行下添加一下内容:
         dataDir=/root/data/zookeeper-3.4.14/data
    dataLogDir=/root/data/zookeeper-3.4.14/logs
    
    配置集群方式,这需要写多个,ip值就是对应的主机ip,因为是不同的主机所以端口号可以完全一样,如图
        
        在之前设置的dataDir中新建myid文件, 写入一个数字, 该数字表示这是第几号server. 该数字必须和zoo.cfg文件中的server.X中的X一一对应.
   
    5)在配置文件vim /etc/profile中添加下面两句
        #zookeeper
        export ZK_HOME=/data/zookeeper-3.4.14
        export PATH=………………:$PATH:$ZK_HOME/bin(path前面路径不要动,添加上后面部分即可)
        
        使用source /etc/profile实时更新修改的配置文件
 
    6)启动
        切换到bin目录下启动:./zkServer.sh  start
        查看是否启动成功: zkServer.sh status
        连接 (-Initiating client) :连接本机可以直接使用 zkCli.sh 
        
         连接其他地址,使用: zkCli.sh -server ip:2181(2181为默认端口)
        
        然后使用ls /:前提条件:添加环境变量
        
    配置文件说明:
        1、myid文件和server.myid  在快照目录下存放的标识本台服务器的文件,他是整个zk集群用来发现彼此的一个重要标识;
        2、zoo.cfg 文件是zookeeper配置文件 在conf目录里;
        3、log4j.properties文件是zk的日志输出文件 在conf目录里用java写的程序基本上有个共同点日志都用log4j,来进行管理;
 
2、在idea工具里面完成dubbo消费提供者和消费者模块
    1)创建一个发送接口文件SmsService,文件内容如下:
    package com.pertest.server;
    public interface SmsService {
    /*
    * 定义一个发短信的接口
    * @param content 内容
    * @param platform平台,分别对应LIANTONG,YIDONG,DIANXIN
    * @return 正常返回发送成功,失败即可,这里为了展示发送的手机号和内容平台,直接把内容再返回去
    */
    String sendSms(String mobile, String content, String platform);
        }
    2)创建SmsServiceImpl文件,该文件模拟是发送信息,文件内容为:
    package com.pertest.server.impl;
    import com.pertest.server.SmsService;
    import org.springframework.stereotype.Component;
    import org.springframework.stereotype.Service;
    @Service
    @Component
    public class SmsServiceImpl implements SmsService {
        public String sendSms(String mobile, String content, String platform) {
        try{
       Thread.sleep(2000);     // 模拟调用短信接口耗时2s
      return String.format("发送结果:%s, 手机号码:%s, 内容:%s, 平台:%s", "SUCCESS", mobile,content,platform);
        }
        catch (InterruptedException e) {
            e.printStackTrace();
        }
        return null;
        }
 
    }   
    3)编辑pom.xml文件,需要将用到的其他依赖包都添加进来
    4)在resources下添加日志文件log4j.xml,文件中包含了日志文件的格式
    5)在resources下添加日志文件applicationProvider.xml,文件中包含注册地址,注册地址(zookeeper所在的地址),用dubbo协议在28080端口暴露服务,接口的位置,实现bean(对应第二步骤)
   6)在创建包com.pertest.main,下创建调用java文件MyMainPertest,文件内容如下:
    package com.pertest.main;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    public class MyMainPertest {
     public static void main(String[] args) throws Exception {
      ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
       new String[] {"applicationProvider.xml"});
      context.start();
      System.out.println("按任意键退出");
      System.in.read();
     }}
    7)编译,进行调试
    8)打Maven包
        view--Tool windows----Maven--install---绿色运行键
    
 
消费端:
1)将一些依赖包添加进来,包括消费提供端的刚刚打的Maven包
 <dependency>
    <groupId>com.pertest</groupId>
    <artifactId>dubbo_provider</artifactId> 
    <version>1.0-SNAPSHOT</version>
 </dependency>
2)在resources下添加日志文件log4j2.xml,文件中包含了日志文件的格式
3)在resources下添加日志文件customer.xml,文件中包含调用的信息
4)在创建包com.pertest.main,下创建调用java文件ConsumerApplicationTests这个类名会在jmeter中用到:
    1.写一个测试方法,GetStringTest随便取名字
public static String GetStringTest(String mobile, String content, String platform){
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:customer.xml");写一个//步骤3对应的文件目录
    context.start();
    SmsService smsService = (SmsService) context.getBean("demoService");
    String s = smsService.sendSms(mobile, content, platform);//消息发送端中编写的那个接口
    return s;
    }
    2.//主函数进行调用
public static void main(String[] args) {
    String mobile = "18262988703";
    String content = "pertest";//内容
    String platform = "test";//平台
    String result = GetStringTest(mobile,content,platform); // 调用java接口
    System.out.println("+++++++++"+result);
}
    3.//jmeter每次执行的内容部分
public SampleResult runTest(JavaSamplerContext args0) {
    //setValues(args);
    SampleResult sr = new SampleResult();
    sr.setSampleLabel("JmeterDubboTest");//在jmeter结果树查看显示的内容
    sr.sampleStart(); //事务开始,开始计算时间
    try {
    String result = GetStringTest(mobile,content,platform); // 调用java接口
    sr.setResponseData("From dubbo provider:"+result,null); //输入方法结果
    sr.setDataType(SampleResult.TEXT); //输入结果保存内容
    System.out.println(result); //在jmeter的控制台终端显示
    sr.setSuccessful(true); //设置测试结果true
    }
    catch (Throwable e) {
    sr.setSuccessful(false); //设置测试结果false
    e.printStackTrace();//失败进行捕获跟踪
    }
    finally {
    sr.sampleEnd(); // 事务结束,计算时间
    }
return sr;
}
    4.最后打包:view--Tool windows----Maven--install---绿色运行键
    5.如果未制定打包文件的位置,则在src同级的target目录下面
    
 
在Maven找包方法:
    1)进入直接在  maven仓库中搜索:https://mvnrepository.com ,找到需要的包的对应版本,并复制对应的依赖配置
        
    2)直接复制该信息,并粘贴在pom.xml里面就可以啦
 
3、修改成jmeter的参数化脚本,并在jmeter里面完成调用
    关于脚本部分:
        在消费端添加上一下内容:
// 定义全局变量
private String mobile;
private String content;
private String platform;
// 此方法为参数化内容,可以显示在jmeter界面中,如果返回为null,则不显示
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("mobile",""); //名字自定义参数化
params.addArgument("content",""); //进入jmeter页面可以看到这个参数
params.addArgument("platform","");
return params;
}
// 执行初始化内容,每个线程执行一次,通常建议在该方法中获取参数值,而不是RunTest方法中使用,以便尽可能减少测试开销
public void setupTest(JavaSamplerContext arg0){
mobile = arg0.getParameter("mobile");
content = arg0.getParameter("content");
platform = arg0.getParameter("platform");
}
// 在测试运行结束时进行本次测试所需的清理工作,也是一个线程执行一次
public void teardownTest(JavaSamplerContext arg0) {
 
}
    1)将消费端的jar包放到到lib--ext目录下
    2)打开jmete,添加java请求
    3)就可以看到刚刚的ConsumerApplicationTests方法,以及设置的参数化值
    
    4)最后的运行结果如图:
        
    
 
posted on 2019-06-13 17:07  Eleven-小白  阅读(208)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3