java调用dubbo服务接口_Dubbo使用invoke指令来调用dubbo接口
- 前言
- 正文
- Mac使用telnet命令提示:command not found,Mac安装telnet 命令
- 一、telnet是什么?
- 二、telnet命令连接Dubbo服务
- 显示列表 – `ls`
- 显示服务端口和连接 – `ps`
- 跳转服务 – `cd`
- 显示当前缺省 – `pwd`
- 追踪服务 – `trace`
- 计数服务 – `count`
- 调用服务方法 – `invoke`
- 显示资源状态 – `status`
- 日志操作 – log
- 帮助命令 – `help`
- 清除内容命令 – clear
- 退出命令 – `exit`
前言
最近被分配了一个任务,是通过dubbo的方式对外提供服务,dubbo没有我们一般的web项目中的Controller层,所以没有办法通过http的方式进行调用调试。作为萌新的我,确实有点一筹莫展,直到被老司机提醒使用dubbo invoke的方式进行接口测试,我才有方向。
正文
首先我们要知道Dubbo不同于传统的web项目需要运行在类似于tomcat、jboss等WEB容器中,Dubbo的运行机制我们可以参考下面Dubbo的组件来进行探究。
Dubbo 核心组件:
Provider: 暴露服务的提供方,可以通过jar或者容器的方式启动服务
Consumer:调用远程服务的服务消费方。
Registry: 服务注册中心和发现中心。
Monitor: 统计服务和调用次数,调用时间监控中心。
Container:服务运行的容器。
Dubbo的Container模块,是一个独立的容器,它就可以为dubbo提供服务发现机制。并且这个Container容器默认是采用dubbo协议在20880端口号暴露服务,所以我们要通过这个接口来调用dubbo接口。
使用invoke调用dubbo接口服务
使用telnet命令进入控制台
命令:telnet ip 端口
telnet 127.0.0.1 20880
invoke命令注入
如果注入的是json,可参考以下格式进行dubbo服务调用
invoke XxxService.xxxMethod({“name”: “luo”}, 18, “男”)
如果注入的是对象,可参考以下格式进行dubbo服务调用:
invoke XxxService.xxxMethod([{“name”:“luo”,“age”:18,“sex”:“男”,“class”:“com.luo.entity.User”}])
# 需要提前调用 cd XxxService,使这个服务成为缺省服务
invoke xxxMethod(1234, "abcd", {"prop" : "value"})
# 调用该服务的方法
invoke XxxService.xxxMethod(1234, "abcd", {"prop" : "value"})
# 调用全路径服务的方法,推荐使用这种方式,精确执行服务方法。
invoke com.xxx.XxxService.xxxMethod(1234, "abcd", {"prop" : "value"})
Mac使用telnet命令提示:command not found,Mac安装telnet 命令
- 原因:在10.12及以下版本,都内置了telnet命令,但是在10.13中,已经取消了
- 解决办法:
安装brew
MacOS 安装 HomeBrew
Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷。
具体安装方式:原文链接:https://blog.csdn.net/jayjaydream/article/details/122795881
一、telnet是什么?
telnet命令通常用来远程登录。telnet程序是基于TELNET协议的远程登录客户端程序。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的 能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个 telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。
telnet命令可以用来调试dubbo服务。进入telnet窗口,键入回车进入dubbo命令模式。可以使用ls命令查看dubbo服务的服务列表,invoke调用某个方法。
二、telnet命令连接Dubbo服务
Dubbo连接 – telnet
Dubbo2.0.5以上版本服务提供端口支持telnet命令
telnet localhost 20880
echo status | nc -i localhost 20880
显示列表 – ls
- 显示服务列表: ls
- 显示服务详细信息列表: ls -l
- 显示服务的方法列表: ls xxxService
- 显示服务的详细方法列表: ls -l xxxService
显示服务端口和连接 – ps
- 显示服务端口列表:
ps
- 显示服务地址列表:
ps -l
- 显示端口上的连接信息:
ps port
- 显示端口上的连接详细信息:
ps -l port
跳转服务 – cd
改变缺省服务: cd xxxService
当设置了缺省服务,凡是需要输入服务名作为参数的命令,都可以省略服务参数。
取消缺省服务: cd /
显示当前缺省 – pwd
pwd
追踪服务 – trace
- 跟踪1次服务任意方法的调用情况:
trace XxxService
- 跟踪10次服务任意方法的调用情况:
trace XxxService 10
- 跟踪1次服务方法的调用情况:
trace XxxService xxxMethod
- 跟踪10次服务方法的调用情况:
trace XxxService xxxMethod 10
计数服务 – count
- 统计1次服务任意方法的调用情况:count XxxService
- 统计10次服务任意方法的调用情况:count XxxService 10
- 统计1次服务方法的调用情况:count XxxService xxxMethod
- 统计10次服务方法的调用情况:count XxxService xxxMethod 10
调用服务方法 – invoke
基本参数直接输入,对象参数以json格式进行传入
-
调用服务的方法:
invoke XxxService.xxxMethod({"prop": "value"})
-
调用服务的方法(自动查找包含此方法的服务):
invoke xxxMethod({"prop": "value"})
# 需要提前调用 cd XxxService,使这个服务成为缺省服务
invoke xxxMethod(1234, "abcd", {"prop" : "value"})
# 调用该服务的方法
invoke XxxService.xxxMethod(1234, "abcd", {"prop" : "value"})
# 调用全路径服务的方法,推荐使用这种方式,精确执行服务方法。
invoke com.xxx.XxxService.xxxMethod(1234, "abcd", {"prop" : "value"})
显示资源状态 – status
- 显示汇总状态:
status
该状态将汇总所有资源的状态,当全部OK时则显示OK,只要有一个ERROR则显示ERROR,只要有一个WARN则显示WARN。
- 显示状态列表:
status -l
日志操作 – log
2.0.6以上版本支持
- 修改dubbo logger的日志级别:
log debug
- 查看file logger的最后100字符的日志:
log 100
帮助命令 – help
-
显示telnet命帮助信息:
help
-
显示xxx命令的详细帮助信息:
help xxx
清除内容命令 – clear
-
清除屏幕上的内容:
clear
-
清除屏幕上的指定行数的内容:
clear 100
退出命令 – exit
- 退出当前telnet命令行:
exit