Apache Dubbo 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
主要包括:
UserInfoService:
package com.dunshan.api.service;
import com.dunshan.api.pojo.UserInfo;
import java.util.HashMap;
import java.util.List;
/** * @author 7DGroup * @version 1.0 * @Date: 2021-05-04 11:51 * @Description: rpc接口调用 */
public interface UserInfoService {
List<UserInfo> queryList();
HashMap<String, Object> queryMap(String name);
}
package com.dunshan.provider.Impl;
import com.dunshan.api.pojo.UserInfo;
import com.dunshan.api.service.UserInfoService;
import org.apache.dubbo.config.annotation.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
/** * @author 7DGroup * @version 1.0 * @Date: 2021-05-04 12:03 * @Description: 提供者实现类 */
@Service
public class UserInfoServiceImpl implements UserInfoService {
@Override
public List<UserInfo> queryList() {
// 初始化数据
UserInfo testDTO1 = new UserInfo();
testDTO1.setId(1);
testDTO1.setName("学生");
testDTO1.setNumber(100);
testDTO1.setCreateTime(new Date());
UserInfo testDTO2 = new UserInfo();
testDTO2.setId(2);
testDTO2.setName("7D-RESAR-性能测试");
testDTO2.setNumber(101);
testDTO2.setCreateTime(new Date());
// 组装数据
List<UserInfo> list = new ArrayList<>();
list.add(testDTO1);
list.add(testDTO2);
return list;
}
@Override
public HashMap<String, Object> queryMap(String name) {
HashMap<String, Object> map = new HashMap<>(2);
map.put(name, "7D-RESAR-初级工具班");
map.put("nacos", "注册中心,配置管理中心");
map.put("date", System.currentTimeMillis());
return map;
}
}
配置文件 application.yml:
server:
port: 8861
dubbo:
# 配置服务信息
application:
name: dubbo-provider
# 禁用QOS同一台机器可能会有端口冲突现象
qos-enable: false
qos-accept-foreign-ip: false
# 配置注册中心
registry:
address: nacos://127.0.0.1:8848
# 设置协议-协议由提供方指定消费方被动接受
protocol:
name: dubbo
port: 20880
spring:
main:
# 解决Bean重复定义问题
allow-bean-definition-overriding: true
ConsumerController:
package com.dunshan.consumer.controller;
import com.dunshan.api.pojo.ResultVO;
import com.dunshan.api.pojo.UserInfo;
import com.dunshan.api.service.UserInfoService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
/** * @author 7DGroup * @version 1.0 * @Date: 2021-05-04 11:54 * @Description: 消费测试接口 */
@RestController
@RequestMapping("/api")
public class ConsumerController {
/** * Dubbo远程调用注解 */
@Reference
private UserInfoService userInfoService;
@RequestMapping(value = "/list", method = RequestMethod.GET)
public ResultVO getList() {
List<UserInfo> providerTestDTOList = userInfoService.queryList();
return new ResultVO.Builder<>().code(200).message("success").data(providerTestDTOList).build();
}
/** * 查询查询 * @param name * @return */
@GetMapping("/api/query")
public ResultVO query(String name) {
HashMap<String, Object> map = userInfoService.queryMap(name);
return new ResultVO.Builder<>().code(200).message("success").data(map).build();
}
}
application.yml:
server:
port: 8862
dubbo:
# 配置服务信息
application:
name: dubbo-consumer
# 禁用QOS同一台机器可能会有端口冲突现象
qos-enable: false
qos-accept-foreign-ip: false
# 配置注册中心
registry:
address: nacos://127.0.0.1:8848
# 设置超时时间
consumer:
timeout: 4000
spring:
main:
# 解决Bean重复定义问题
allow-bean-definition-overriding: true
下载链接:https://nacos.io/zh-cn/docs/quick-start.html
启动:
sh startup.sh -m standalone
页面显示如下:
项目启动后,nacos显示如下:
1、下载: https://gitee.com/liselotte/spring-boot-dubbo-demo.git
2、IDEA 中编译 Jar 包
3、打成 Jar 包放入 ${JMETER_HOME}\lib\ext
路径下,重启即可
4、重启 JMeter 查看插件
添加成功如:
有上面的环境,并且 JMeter 中也有 Dubbo 插件,那么剩下的就是通过插件完成今天的接口开发,接下来看下需要测试的接口有哪些,这些只模拟无参接口与有参数接口。
下面是这次做测试 Dubbo 接口
package com.dunshan.api.service;
import com.dunshan.api.pojo.UserInfo;
import java.util.HashMap;
import java.util.List;
/** * @author 7DGroup * @version 1.0 * @Date: 2021-05-04 11:51 * @Description: rpc接口调用 */
public interface UserInfoService {
List<UserInfo> queryList();
HashMap<String, Object> queryMap(String name);
添加 Dubbo Sample 请求,并且根据上面需要测试的接口,在 Get Provider LIst 中的 Interface 中输入接口名字,与方法名称点击获取即可把需要测试的全部方法名称用列表显示出来。
添加结果查看树进行结果验证:
添加 Dubbo Sample 请求
验证结果:
有上面认识后自己搭建环境学习也好,办理事情也好,都会慢慢按步骤一步一步去实现。
源码地址:
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/zuozewei/article/details/121471374
内容来源于网络,如有侵权,请联系作者删除!