在开发环境进行 Dubbo
服务的调试时,报了下面这个错误
Failed to invoke the method rank in the service rank.client.service.RankEngine. Tried 3 times of the providers [192.168.4.170:8090] (1/1) from the registry 192.168.2.198:2181 on the consumer 10.131.108.4 using the dubbo version 2.7.6.
看来是 Consumer
在调用 Provider
的方法时出了问题
尽管看起来能找到正确的 Provider
,还是优先排查一下注册中心
使用zkCli连接ZooKeeper
1
2$ ./zkCli.sh
Welcome to ZooKeeper!分别查看 providers 和 consumers
providers
1
[zk: localhost:2181(CONNECTED) 5] ls /dubbo/rank.client.service.RankEngine/providers
consumers
1
[zk: localhost:2181(CONNECTED) 6] ls /dubbo/rank.client.service.RankEngine/consumers
主要看一下 Consumer
有没有注册上, 以及相应的信息(group、version、端口号)与 Provider
是否一致——发现没有问题
看来只能在 Consumer
那台机器上连接 Dubbo
调试一下了
连接到 Dubbo
1
2
3
4
5# telnet 192.168.4.17 8090
Trying 192.168.4.170...
Connected to 192.168.4.170.
Escape character is '^]'.
dubbo>查看所有 Provider
1
2
3dubbo>ls
PROVIDER:
search-rank/rank.client.service.RankEngine:1.0.0将要调试的类设为 default
1
2
3dubbo>cd RankEngine
Used the RankEngine as default.
You can cancel default service by command: cd /
先模拟一下正式的参数调用
1
dubbo>invoke rank([{"id":21139999,"type":1},{"id":21435079,"type":1}],{"biz":"mdd_v3"})
失败了!
再试一下空参数
1
dubbo>invoke rank()
这次报错不一样,提示没有这个方法——这是对的,该类中并没有无参数的rank方法
看来是方法执行出问题了最后试一下空值参数
1
2
3dubbo>invoke rank([],{})
Use default service RankEngine.
result: {"cost":0,"pvid":"b3c60767-85a9-4927-8bcb-abdf945f4b3b-1636106181827","result":{},"status":0}这个没有问题。说明是参数出了问题!
接下来把这方法的两个参数与相对应的包排查一下
发现了问题:两个包的版本不一致!
更新了版本后,发布就OK了