Dubbo服务发布之后,除了编写Dubbo Consumer服务调用去测试,我们也可以利用telnet命令进行调试、管理。Dubbo 2.0.5以上版本服务提供端口支持telnet命令。本篇文章介绍一下如何使用telnet命令对Dubbo服务进行测试。
1. 确定Dubbo服务端口
Dubbo服务端口是定义在dubbo-provider文件中的,如下:上述文件中通过dubbo:protocol可以确定dubbo服务端口是10001
2. 使用telnet连接dubbo服务
通过telnet ip port方式可以测试dubbo服务是否连通,命令如下:
telnet 127.0.0.1 10001
回车后键入回车进入dubbo命令模式,如下:
dubbo>
3. 查看服务列表
ls命令可以查看服务列表
dubbo>ls
com.zhuoli.service.springboot.dubbo.contract.service.DubboTestService
dubbo>
查看服务中的接口
dubbo>ls com.zhuoli.service.springboot.dubbo.contract.service.DubboTestService
sayHello
也可以通过如下方式查看接口
dubbo>cd com.zhuoli.service.springboot.dubbo.contract.service.DubboTestService
dubbo>ls
sayHello
4. invoke调用服务接口
使用invoke调用接口,以JSON格式传入参数
dubbo>cd com.zhuoli.service.springboot.dubbo.contract.service.DubboTestService
dubbo>ls
sayHello
dubbo>invoke sayHello({"content": "zhuoli jjj"})
Use default service com.zhuoli.service.springboot.dubbo.contract.service.DubboTestService.
{"result":"Hello: zhuoli jjj"}
elapsed: 1 ms.
dubbo>
注意invoke使用dubbo版本需要升级到2.8.4,否则telnet调用会报错,查看了2.6.3版本的源码,确实不支持接口参数是对象的情况,不知道是bug还是本来就不支持。详情请查看dubbo源码InvokeTelnetHandler类的findMethod方法,2.8.4版本和之前版本的差异就能找到原因。