一、为什么要用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泛化调用相关推荐

  1. Dubbo泛化调用处理序列化问题

    知其然要知其所以然,刚好趁这个机会把博客重新捡起来. 之前项目的目的是处理dubbo泛化调用的返回值,处理LocalDateTim,LocalDate,LocalTime.转换为时间戳. 一.如何泛化 ...

  2. Dubbo 泛化调用

    dubbo 泛化调用 含义 使用 含义 官方说的文邹邹的,不太懂.按我的理解,就是可以通过指定某个接口的全限定名和方法名,调用远程有提供该方法的服务. 通过上篇文章Dubbo入门,我们可以知道作为服务 ...

  3. 代码技巧——dubbo泛化调用

    现在有一种业务场景: (1)业务方B调用任务系统A,提交一个任务,由A保证任务尽可能的被执行成功(系统A自带幂等.重试),在A完成任务的执行后将执行情况同步回调通知B应用: (2)因此,B应用在提交任 ...

  4. dubbo泛化调用原理

    泛接口调用方式主要用于客户端没有API接口及模型类元的情况,参数及返回值中的所有POJO均用Map表示,通常用于框架集成,比如:实现一个通用的服务测试框架,可通过GenericService调用所有服 ...

  5. Dubbo笔记 ⑱ :泛化调用 泛化实现

    文章目录 一.前言 二.泛化调用与泛化实现 1. 泛化调用 2. 泛化实现 三.源码实现 1. GenericImplFilter 2. GenericFilter 四.总结 一.前言 本系列为个人D ...

  6. dubbo的调用原理及泛化调用

    简单介绍 dubbo是阿里开源出来的一个rpc框架,主要是用于微服务分布式项目的远程调用,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现,下面是调用的原理图: ...

  7. Dubbo泛化引用和泛化实现

    开篇 在Dubbo官方文档中关于泛化调用和泛化实现的说明,这里针对文档的案例做一些简单的说明和解释. 例子 // 引用远程服务 // 该实例很重量,里面封装了所有与注册中心及服务提供方连接,请缓存 R ...

  8. java impliments,dubbo使用GenericService泛化调用

    我们项目中常见场景,java应用内部接口都是使用dubbo,某个非java应用需要调用我们的接口的时候,无法使用dubbo,这是我们需要给它提供其他形式的接口,如restful api等等,这时我们需 ...

  9. Apache Dubbo系列:泛化调用

    上一章,我们讲到了Dubbo的线程池策略,本章我们一起探讨,Dubbo如何实现泛化调用的.主要内容包括: 1.什么是泛化调用 2.泛化调用的三种方式 3.如何使用 4.源码分析 推荐阅读: Apach ...

最新文章

  1. LYVC揭秘硅谷核心基金圈投资游戏规则
  2. keras从入门到放弃(八)过拟合问题
  3. SharePoint Add-in Model (App Model) 介绍 – 概念、托管方式、开发语言
  4. 一步步编写操作系统 31 cpu的分支预测 下
  5. LDAPimplementation
  6. Atitit 异常的实现原理 与用户业务异常
  7. JJavaBean中使用JDBC方式进行事务处理
  8. 人行横道——步行管理(交通运行管理)
  9. 最优传输论文(五十五):A DIRT-T approach to unsupervised domain adaptation
  10. Cao Le的 Emacs org mode 学习笔记
  11. STM32学习笔记(6):PWM控制
  12. 2023年长安大学油气田地质与开发考研上岸前辈备考经验
  13. 龙迅LT7911D Type-C/DP/eDP to MIPI DSI/CSI/LVDS 信号转换芯片
  14. JAVA 操作 properties 配置文件
  15. 高通410 随身WIFI刷入Debian系统(玩法合集)
  16. 第四周网络攻防实践作业
  17. [车联网安全自学篇] Android安全之移动安全测试指南「安全测试和SDLC」
  18. 2019年CCPC - 网络赛E:huntian oy【杜教筛】
  19. celery爬取58同城二手车数据及若干问题
  20. 【Azure Data Platform】ETL工具(19)——Azure Databricks

热门文章

  1. web JSP的动态交互 cs与bs结构的区别, bs结构的超详细解释,jsp的表单验证
  2. 软件测试工程师 路在何方?如何发展?职业规划是怎样的?
  3. 无人机小知识总结(主要针对多旋翼)
  4. 计算机科学与技术群头,计算机科学与技术专业课程群建设研究
  5. pip安装包时报错WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status =None))
  6. 【Win10】打开控制面板提示:操作系统当前的配置不能运行此应用程序
  7. ORA-32594: COMMENT 命令的对象类别无效
  8. c语言课题设计题目猜数字游戏,C语言课题设计报告(猜数字游戏)文档.doc
  9. 百度地图计算两坐标点之间距离计算
  10. Day03-List、Set、数据结构、Collections