前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dubbo之telnet方式调用Facade接口

Dubbo之telnet方式调用Facade接口

作者头像
书唐瑞
发布2022-06-02 13:55:38
5830
发布2022-06-02 13:55:38
举报
文章被收录于专栏:Netty历险记

在我的日常开发中,经常会自测自己写的Dubbo接口,或者联调调用别人写的Dubbo接口.

而通过Dubbo提供的telnet方式调用Dubbo接口,是我经常使用的方式.

然而方法的入参不同,调用的写法也不一样.接下来就由简至繁的方式介绍各种写法.

首先说明下:

我们调用的方法名叫做query,接口名叫做UserInfoFacade.

当然,你还要知道提供者的IP和端口,通过telnet命令连接.

第一种

入参是一个简单的字符串

代码语言:javascript
复制
String query(String address);

我们通过invoke命令调用

代码语言:javascript
复制
invoke UserInfoFacade.query("HANGZHOU")

第二种

代码语言:javascript
复制
String query(String address, Integer year);
代码语言:javascript
复制
invoke UserInfoFacade.query("HANGZHOU", 2020)

第三种

代码语言:javascript
复制
String query(UserInfoCondition userInfoCondition);
// 入参是一个对象,如下
public class UserInfoCondition {
    private String address;
}
代码语言:javascript
复制
// 通过一个JSON格式传入
invoke UserInfoFacade.query({"address": "HANGZHOU"})

我们也可以通过class指定入参的类型

代码语言:javascript
复制
invoke UserInfoFacade.query({"class":"com.infuq.condition.UserInfoCondition","address": "HANGZHOU"})

第四种

代码语言:javascript
复制
String query(UserInfoCondition userInfoCondition);
// 入参是一个对象,对象中有个List属性
public class UserInfoCondition {
    private List<String> addressList;
}
代码语言:javascript
复制
invoke UserInfoFacade.query({"addressList":["A","B","C"]})
// 入参还是一个JSON格式,key是入参对象的属性名,value是属性的值

第五种

代码语言:javascript
复制
String query(UserInfoCondition userInfoCondition);
public class UserInfoCondition {
    private List<UserInfo> userList;
}
public class UserInfo {
    private String address;
    private String year;
}
代码语言:javascript
复制
invoke UserInfoFacade.query({"userList":[{"address":"HANGZHOU","year":"2020"},{"address":"HANGZHOU","year":"2021"}]})
// 可以这么理解入参,入参如果是对象,那么就用{}表示
// 属性如果是List,那么就用[]表示
// 即对象用{}表示,List用[]表示

第六种

这种情况比较特别,需要留意

代码语言:javascript
复制
String query(UserInfoCondition userInfoCondition);
public class UserInfoCondition {
    private List<Map<String, Integer>> mList;
}
代码语言:javascript
复制
invoke UserInfoFacade.query({"mList":[{"year":2020},{"month":12}]})

第七种

代码语言:javascript
复制
String query(UserInfoCondition userInfoCondition);
public class UserInfoCondition {
    // 这里的Map的key是字符串类型
    private List<Map<String, UserInfo>> mUserList;
}
代码语言:javascript
复制
invoke UserInfoFacade.query({"mUserList":[{"Jim":{"address":"HANGZHOU","year":"2020"}},{"Ktu":{"address":"HANGZHOU","year":"2021"}}]})

第八种

代码语言:javascript
复制
String query(UserInfoCondition userInfoCondition);
public class UserInfoCondition {
    // 这里的Map的key是Integer类型
    private List<Map<Integer, UserInfo>> mUserList;
}
代码语言:javascript
复制
invoke UserInfoFacade.query({"xUserList":[{1:{"address":"HANGZHOU","year":"2020"},"class":"java.util.HashMap"},{2:{"address":"ZHEJIANG","year":"2021"},"class":"java.util.HashMap"}]})
或
invoke UserInfoFacade.query({"xUserList":[{"1":{"address":"HANGZHOU","year":"2020"},"class":"java.util.HashMap"},{"2":{"address":"ZHEJIANG","year":"2021"},"class":"java.util.HashMap"}]})

第九种

代码语言:javascript
复制
String query(UserInfoCondition userInfoCondition);
public class UserInfoCondition {
    private Map<Integer, UserInfo> mUserMap;    
}
代码语言:javascript
复制
invoke UserInfoFacade.query({"mUserMap":{12:{"address":"ZHEJIANG","year":"2020"},"class":"java.util.HashMap",13:{"address":"HANGZHOU","year":"2021"},"class":"java.util.HashMap"}})

第十种

代码语言:javascript
复制
String query(UserInfoCondition userInfoCondition);
public class UserInfoCondition {
    private Map<UserInfo, Integer> mUserMap;    
}
代码语言:javascript
复制
invoke UserInfoFacade.query({"mUserMap":{{"address":"ZHEJIANG","year":"2020"}:12,"class":"java.util.HashMap",{"address":"HANGZHOU","year":"2021"}:13,"class":"java.util.HashMap"}})

如果通过class指定的类是内部类,则通过$符号

代码语言:javascript
复制
invoke ItemProductService.getByItemProductQuery({"class":"com.xyz.service.ItemProductService$ItemProductQuery","artisanId":"11150a7f733942168960d85e80643c22","rows": 10000,"offset": 0,"isDel": 0})
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Netty历险记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档