Dubbo使用invoke指令来调用dubbo接口 | 您所在的位置:网站首页 › 调用dubbo接口泛化错误 › Dubbo使用invoke指令来调用dubbo接口 |
Dubbo使用invoke指令来调用dubbo接口
前言
最近被分配了一个任务,是通过dubbo的方式对外提供服务,dubbo没有我们一般的web项目中的Controller层,所以没有办法通过http的方式进行调用调试。作为萌新的我,确实有点一筹莫展,直到被老司机提醒使用dubbo invoke的方式进行接口测试,我才有方向。 关于dubbo的搭建可参考我的博客:SpringBoot使用dubbo实现RPC调用 正文首先我们要知道Dubbo不同于传统的web项目需要运行在类似于tomcat、jboss等WEB容器中,Dubbo的运行机制我们可以参考下面Dubbo的组件来进行探究。 Dubbo 核心组件 Provider: 暴露服务的提供方,可以通过jar或者容器的方式启动服务Consumer:调用远程服务的服务消费方。Registry: 服务注册中心和发现中心。Monitor: 统计服务和调用次数,调用时间监控中心。Container:服务运行的容器。
使用telnet命令进入控制台 命令:telnet ip 端口 telnet 127.0.0.1 20880查看可用的dubbo接口 ls: 显示服务列表。ls -l :显示服务详细信息列表。ls XxxService :显示服务的方法列表。ls -l XxxService : 显示服务的方法详细信息列表。![]() 使用invoke命令注入 如果注入的是json,可参考以下格式进行dubbo服务调用 invoke XxxService.xxxMethod({“name”: “luo”}, 18, “男”)如果注入的是对象,可参考以下格式进行dubbo服务调用: invoke XxxService.xxxMethod([{“name”:“luo”,“age”:18,“sex”:“男”,“class”:“com.luo.entity.User”}])使用一个Demo可以帮助大家生成对应的invoke命令 public class GenerateInvoke { public static void main(String[] args) throws NoSuchMethodException { QueryReq queryReq = new QueryReq(); queryReq.setName("溪源") String invokeCommand = getInvoke(queryReq, ICeshiService.class, "query"); System.out.println("invoke命令↓"); System.out.println(invokeCommand); } /** * 生成invoke命令 * @param reqParam 请求参数 * @param reqService 请求的接口service服务 * @param reqMathed 请求的service下的方法 * @throws NoSuchMethodException */ public static String getInvoke(Object reqParam, Class reqService, String reqMathed) throws NoSuchMethodException { JSONObject jsonObject = JSONObject.parseObject(JsonUtil.toJson(reqParam)); jsonObject.put("class", reqParam.getClass().getName()); return "invoke "+ reqService.getName()+ "."+ reqService.getMethod(reqMathed,reqParam.getClass()).getName()+ " ("+jsonObject.toJSONString()+")"; } } |
CopyRight 2018-2019 实验室设备网 版权所有 |