接口测试-dubbo泛化调用
一、为什么要用dubbo泛化调用
泛化接口调用方式主要用于客户端没有 API 接口及模型类元的情况,参数及返回值中的所有 POJO 均用 Map 表示,通常用于框架集成,比如:实现一个通用的服务测试框架,可通过 GenericService 调用所有服务实现。
二、查找dubbo地址和端口
进行dubbo接口测试之前首先需要知道dubbo接口的端口号,如果provider注册时已经指定了dubbo端口,直接使用就可以,如果没有指定就需要连接注册中心查看对应的端口,以下是在zookeeper查看dubbo端口的方法:
- 连接zk查看
# 切换到zookeeper的bin目录下 ./zkCli.sh -server zk服务地址:zk服务端口 ls /dubbo_group/com.xxx.xxx.xxxService/providers
- 解码zk结果
zk查看结果是经过编码的URL,所以通过URL解码的方式解码就可以,贴一个我自己使用的解码网址:在线解码
三、使用telnet命令进行接口调试
从 2.0.5 版本开始,dubbo 开始支持通过 telnet 命令来进行服务治理。
- 使用telnet命令连接dubbo
telnet dubbo_provider_ip dubbo_port
- telnet常用命令
# 显示服务列表 ls # 显示服务详细信息列表 ls -l # 显示服务的方法列表 ls xxxService # 显示服务的方法详细信息列表 ls -l xxxService # 调用服务的方法 invoke xxxService.method # 调用服务的方法(自动查找包含此方法的服务) invoke method
四、泛化调用核心代码
public Object dubboGeneric(DubboDto dto){logger.info(">>>>>调用dubbo服务接口,入参:{}", dto);// 引用远程服务// 该实例很重量,里面封装了所有与注册中心及服务提供方连接,请缓存ReferenceConfig<GenericService> reference = new ReferenceConfig<>();// 弱类型接口名reference.setInterface(dto.getInterfaceName());// 声明为泛化接口reference.setGeneric(true);reference.setApplication(new ApplicationConfig(dto.getApplication()));reference.setVersion(dto.getVersion());reference.setTimeout(dto.getTimeout());reference.setUrl(dto.getUrl());// 获取缓存中的实例ReferenceConfigCache cache = ReferenceConfigCache.getCache();GenericService genericService = cache.get(reference);// 用org.apache.dubbo.rpc.service.GenericService可以替代所有接口引用// 基本类型以及Date,List,Map等不需要转换,直接调用// 调用实例Object result = genericService.$invoke(dto.getMethod(), dto.getParameterTypes(), dto.getArgs());logger.info(">>>>>调用dubbo服务接口,出参:{}", result);return result;}
欢迎大家一起交流,完整代码传送门:dubbo泛化调用完整代码
接口测试-dubbo泛化调用相关推荐
- Dubbo泛化调用处理序列化问题
知其然要知其所以然,刚好趁这个机会把博客重新捡起来. 之前项目的目的是处理dubbo泛化调用的返回值,处理LocalDateTim,LocalDate,LocalTime.转换为时间戳. 一.如何泛化 ...
- Dubbo 泛化调用
dubbo 泛化调用 含义 使用 含义 官方说的文邹邹的,不太懂.按我的理解,就是可以通过指定某个接口的全限定名和方法名,调用远程有提供该方法的服务. 通过上篇文章Dubbo入门,我们可以知道作为服务 ...
- 代码技巧——dubbo泛化调用
现在有一种业务场景: (1)业务方B调用任务系统A,提交一个任务,由A保证任务尽可能的被执行成功(系统A自带幂等.重试),在A完成任务的执行后将执行情况同步回调通知B应用: (2)因此,B应用在提交任 ...
- dubbo泛化调用原理
泛接口调用方式主要用于客户端没有API接口及模型类元的情况,参数及返回值中的所有POJO均用Map表示,通常用于框架集成,比如:实现一个通用的服务测试框架,可通过GenericService调用所有服 ...
- Dubbo笔记 ⑱ :泛化调用 泛化实现
文章目录 一.前言 二.泛化调用与泛化实现 1. 泛化调用 2. 泛化实现 三.源码实现 1. GenericImplFilter 2. GenericFilter 四.总结 一.前言 本系列为个人D ...
- dubbo的调用原理及泛化调用
简单介绍 dubbo是阿里开源出来的一个rpc框架,主要是用于微服务分布式项目的远程调用,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现,下面是调用的原理图: ...
- Dubbo泛化引用和泛化实现
开篇 在Dubbo官方文档中关于泛化调用和泛化实现的说明,这里针对文档的案例做一些简单的说明和解释. 例子 // 引用远程服务 // 该实例很重量,里面封装了所有与注册中心及服务提供方连接,请缓存 R ...
- java impliments,dubbo使用GenericService泛化调用
我们项目中常见场景,java应用内部接口都是使用dubbo,某个非java应用需要调用我们的接口的时候,无法使用dubbo,这是我们需要给它提供其他形式的接口,如restful api等等,这时我们需 ...
- Apache Dubbo系列:泛化调用
上一章,我们讲到了Dubbo的线程池策略,本章我们一起探讨,Dubbo如何实现泛化调用的.主要内容包括: 1.什么是泛化调用 2.泛化调用的三种方式 3.如何使用 4.源码分析 推荐阅读: Apach ...
最新文章
- LYVC揭秘硅谷核心基金圈投资游戏规则
- keras从入门到放弃(八)过拟合问题
- SharePoint Add-in Model (App Model) 介绍 – 概念、托管方式、开发语言
- 一步步编写操作系统 31 cpu的分支预测 下
- LDAPimplementation
- Atitit 异常的实现原理 与用户业务异常
- JJavaBean中使用JDBC方式进行事务处理
- 人行横道——步行管理(交通运行管理)
- 最优传输论文(五十五):A DIRT-T approach to unsupervised domain adaptation
- Cao Le的 Emacs org mode 学习笔记
- STM32学习笔记(6):PWM控制
- 2023年长安大学油气田地质与开发考研上岸前辈备考经验
- 龙迅LT7911D Type-C/DP/eDP to MIPI DSI/CSI/LVDS 信号转换芯片
- JAVA 操作 properties 配置文件
- 高通410 随身WIFI刷入Debian系统(玩法合集)
- 第四周网络攻防实践作业
- [车联网安全自学篇] Android安全之移动安全测试指南「安全测试和SDLC」
- 2019年CCPC - 网络赛E:huntian oy【杜教筛】
- celery爬取58同城二手车数据及若干问题
- 【Azure Data Platform】ETL工具(19)——Azure Databricks
热门文章
- web JSP的动态交互 cs与bs结构的区别, bs结构的超详细解释,jsp的表单验证
- 软件测试工程师 路在何方?如何发展?职业规划是怎样的?
- 无人机小知识总结(主要针对多旋翼)
- 计算机科学与技术群头,计算机科学与技术专业课程群建设研究
- pip安装包时报错WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status =None))
- 【Win10】打开控制面板提示:操作系统当前的配置不能运行此应用程序
- ORA-32594: COMMENT 命令的对象类别无效
- c语言课题设计题目猜数字游戏,C语言课题设计报告(猜数字游戏)文档.doc
- 百度地图计算两坐标点之间距离计算
- Day03-List、Set、数据结构、Collections