Dubbo接口测试的几种方式

4 篇文章 0 订阅
3 篇文章 0 订阅

Dubbo接口测试的几种方式

测试前需准备zookeeper以及dubbo服务

一:windows本地安装Zookeeper

1. 下载zookeeper,下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/

 

2. 解压后,进入目录中的conf目录,有一个zoo_sample.cfg文件,将其重命名为zoo.cfg

 

3.新建data文件,修改zoo.cfg文件

 

4. 进入bin目录双击zkServer.cmd即可开启zookeeper本地服务

 

二:编写dubbo服务接口,获取省市区信息接口

1.接口服务

package com.sgr.md.service;

import com.sgr.md.request.Area;

import com.sgr.md.response.Result;

import java.util.List;

public interface AreaService {

Result<List<Area>> findCityByPartnerId(Integer partnerId);

Result<Area> findCityByCityName(String cityName);

}

2.dao层

package com.sgr.md.provider.dao;

import com.sgr.md.request.Area;

import java.util.List;

public interface AreaMapper {

List<Area> findCityByPartnerId(Integer partnerId);

Area findCityByCityName(String cityName);

}

3.AreaMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mapper namespace="com.sgr.md.provider.dao.AreaMapper">

<select id="findCityByPartnerId" resultType="com.sgr.md.request.Area">

select id,cityName,parentId from s_provinces where parentId=#{parentId}

</select>

<select id="findCityByCityName" resultType="com.sgr.md.request.Area">

SELECT id,cityName,parentId FROM s_provinces where cityName=#{cityName}

</select>

</mapper>

4.接口实现类

package com.sgr.md.provider.impl;



import com.alibaba.dubbo.config.annotation.Service;

import com.sgr.md.request.Area;

import com.sgr.md.provider.dao.AreaMapper;

import com.sgr.md.response.Result;

import com.sgr.md.service.AreaService;

import org.springframework.beans.factory.annotation.Autowired;



import java.util.List;



@Service(group = "mm")

public class AreaServiceImpl implements AreaService {



@Autowired

private AreaMapper areaMapper;



@Override

public Result<List<Area>> findCityByPartnerId(Integer partnerId) {

List<Area> result = areaMapper.findCityByPartnerId(partnerId);

return new Result(true, result);

}



@Override

public Result<Area> findCityByCityName(String cityName) {

Area result = areaMapper.findCityByCityName(cityName);

return new Result(true, result);

}

}

5.application.properties配置文件

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8

spring.datasource.username=root

spring.datasource.password=123456

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.max-active=10

spring.datasource.max-idle=5

spring.datasource.min-idle=0



spring.dubbo.appname=mm-dubbo

spring.dubbo.registry=zookeeper://127.0.0.1:2181

spring.dubbo.protocol=dubbo

spring.dubbo.port=20800

6.服务提供者启动类

package com.sgr.md.provider;



import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.tomcat.jdbc.pool.DataSource;

import org.mybatis.spring.SqlSessionFactoryBean;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.context.annotation.Bean;

import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import org.springframework.transaction.PlatformTransactionManager;



@SpringBootApplication

@MapperScan("com.sgr.md.provider.dao")

@EnableDubbo

public class ProviderApplication {

@Bean

@ConfigurationProperties(prefix="spring.datasource")

public DataSource dataSource() {

return new DataSource();

}

@Bean

public SqlSessionFactory sqlSessionFactoryBean() throws Exception {

SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();

sqlSessionFactoryBean.setDataSource(dataSource());

PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();

sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mapper/*.xml"));

return sqlSessionFactoryBean.getObject();

}

@Bean

public PlatformTransactionManager transactionManager() {

return new DataSourceTransactionManager(dataSource());

}

public static void main(String[] args) throws InterruptedException {

SpringApplication.run(ProviderApplication.class, args);

Thread.sleep(Long.MAX_VALUE);

}

}

三、启动zookeeper、启动dubbo服务,将服务注册到zookeeper

1.双击zkServer.cmd

 

2.启动dubbo服务

 

四、开始测试

(注意:telnet测试参数为基本类型的时候,可以使用下面的形式;但如果参数是一个对象,那就需要为该参数添加一个class属性,来声明该json对应的java类,例如:invoke service.method({"class":"xx.xx.xx","key":"value"}) 这样的形式)

1.telnet形式调用dubbo

 

 

 

2.java连接zookeeper调用dubbo

 

 

3.jmeter自定义sampler调用dubbo

jmeter1

jmeter2

 

 

4.各系统之间的服务调用形式

 

 

 

Doe 发布 [V1.0.0] 前段时间排查某问题的时候,想要快速知道某些dubbo接口(三无)的响应结果,但不想启动项目(因为这些项目不是你负责的,不会部署而且超级笨重),也不想新建一个dubbo客户端项目(占地方),也不想开telnet客户端连接口(麻烦而且有限制)。所以扣了dubbo的netty模块源码,封装了个收发客户端集成一个工具,可以快速调试dubbo接口。源码地址:https://github.com/VIPJoey/doe 极简模式 普通模式 目录结构 mmc-dubbo-api 接口项目,主要用于测试。 mmc-dubbo-provider dubbo提供者项目,主要用于测试。 mmc-dubbo-doe 主项目,实现dubbo接口调试。 deploy 部署文档 功能特性 极简模式:通过dubbo提供的telnet协议收发数据。 普通模式:通过封装netty客户端收发数据。 用例模式:通过缓存数据,方便下一次操作,依赖普通模式。 增加依赖:通过调用maven命令,下载jar包和热加载到系统,主要用来分析接口方法参数,主要作用在普通模式。 依赖列表:通过分析pom文件,展示已经加载的jar包。 其它特性 springboot 整合 redis,支持spring el 表达式。 springboot 整合 thymeleaf。 springboot 整合 logback。 netty rpc 实现原理。 开发环境 jdk 1.8 maven 3.5.3 dubbo 2.6.1 lombok 1.16.20 idea 2018 windows 7 安装步骤 安装jdk 安装maven,并设置好环境变量,仓库目录。 进入mmc-dubbo-api目录,执行mvn clean install命令,省api的jar包。 进入mmc-dubbo-doe目录,执行mvn clean install 命令,在target目录生成dubbo-doe-1.0.0-RELEASE.jar 在F盘(可以任意盘)创建目录F:\app\doe 把dubbo-doe-1.0.0-RELEASE.jar拷贝到F:\app\doe 把deploy目录中的所有文件拷贝到F:\app\doe 如果您电脑安装了git bash,可以在bash窗口运行 ./deploy.sh start,否则如果没有安装git bash,只能打开cmd切换到F:\app\doe目录,然后执行java -jar dubbo-doe-1.0.0-RELEASE.jar --spring.profiles.active=prd 打开浏览器,访问地址:http://localhost:9876/doe/home/index 全剧终
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值