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

从0到1实现RPC | 11 丰富测试案例

测试案例主要针对服务消费者consumer,复杂逻辑都在consumer端。

  1. 常规int类型,返回User对象

图片

参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试方法重载,同名方法,参数不同

图片

方法签名的实现,主要逻辑都在MethodUtils工具类中。

  1. 测试返回字符串

图片

参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试重载方法返回字符串

图片

参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试local toString方法

图片

本地方法不走远程调用,主要逻辑都在MethodUtils工具类中。

  1. 常规int类型,返回int

图片

基本参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试long+float类型

图片

基本参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试参数是User类型

图片

对象参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试返回long[]

图片

数组参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试参数和返回值都是long[]

图片

数组参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试参数和返回值都是List类型

图片

List参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试参数和返回值都是Map类型

图片

Map参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试参数和返回值都是Boolean/boolean类型

图片

基本参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试参数和返回值都是User[]类型

图片

对象数组参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 试参数为long,返回值是User类型

图片

基本参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试参数为boolean,返回值都是User类型

图片

基本参数类型转换,主要实现逻辑都在TypeUtils工具类中。

  1. 测试服务端抛出一个RuntimeException异常

图片

异常处理,主要实现逻辑都在RpcInvocationHandler工具类中。

  1. 测试服务端抛出一个超时重试后成功的场景

图片

异常超时重试,主要实现逻辑都在RpcInvocationHandler工具类中。

  1. 测试通过Context跨消费者和提供者进行传参

图片

跨线程传参

  • 使用ThreadLocal实现;
  • 在RpcRequest中携带传递的参数;
  • 在consumer端,使用ParameterFilter将参数从RpcContext传递到RpcRequest;
  • 在provider端,反射调用之前,从RpcRequest中获取到参数封装到当前RpcContext。调用完成之后,需要清除,防止内存泄漏和上下文污染

源码:

https://github.com/midnight2104/midnight-rpc/tree/lesson11

http://www.lryc.cn/news/338498.html

相关文章:

  • 在前端开发中用到了哪些设计模式?
  • ES6 的解构赋值
  • 蓝桥杯物联网竞赛_STM32L071KBU6_全部工程及国赛省赛真题及代码
  • 关于UCG游戏平台的一些思考
  • 一起学习python——基础篇(20)
  • 云服务器安装Mysql、MariaDB、Redis、tomcat
  • Android笔记--MediaCodec(二)
  • 【Java探索之旅】方法重载 递归
  • 多输入多输出 | Matlab实现XGboost多输入多输出预测
  • 【设计模式】3、builder 建造者模式
  • 使用ROCm的HIP API向量加法程序
  • Vue3---基础7(Props)
  • 第一节:什么是操作系统
  • Day:007(1) | Python爬虫:高效数据抓取的编程技术(scrapy框架使用)
  • Echarts使用dataTool写可自定义横坐标的盒须图(箱线图)
  • SpringBoot编写一个SpringTask定时任务的方法
  • 【Qt编译】ARM环境 Qt5.14.2-QtWebEngine库编译 (完整版)
  • vue简单使用二(循环)
  • JavaScript入门--变量
  • 给自己的机器人部件安装单目摄像头并实现gazebo仿真功能
  • 用AI的视角看世界
  • MATLAB 自定义实现点云法向量和曲率计算(详细解读)(64)
  • 拯救鲨鱼!Helping wireshark!wireshark未响应解决方法
  • 设计模式之责任链讲解
  • K8s: 将一个节点移出集群和相关注意事项
  • Python学习笔记24 - 学生信息管理系统
  • 【物联网应用案例】某制造企业电锅炉检测项目
  • 设计模式实践
  • 嵌入式学习52-ARM1
  • Java(MySQL基础)