客户端开发
介绍web端如何调用服务端bus开发的接口,源代码在
BusController
中。
引入客户端工具
推荐使用motan
版本
<dependency>
<groupId>com.wueasy</groupId>
<artifactId>wueasy-bus-client-motan</artifactId>
<version>RELEASE</version>
</dependency>
也可以使用dubbo
版本
<dependency>
<groupId>com.wueasy</groupId>
<artifactId>wueasy-bus-client-dubbo</artifactId>
<version>RELEASE</version>
</dependency>
或者使用sofa-rpc
版本
<dependency>
<groupId>com.wueasy</groupId>
<artifactId>wueasy-bus-client-sofa</artifactId>
<version>RELEASE</version>
</dependency>
restful接口通用调用
自定义一个通用调用bus的BusController
接口,通过调用/servlet/功能编号
,直接请求服务端接口。
客户端连接配置:
wueasy :
bus :
#客户端配置
client :
base : #默认客户端配置
group : wueasy-demo
minClientConnection : 5 #client最小连接数
maxClientConnection : 20 #client最大连接数
requestTimeout : 60000 #请求超时时间(毫秒)
java调用demo:
/**
* 调用bus
* @author: fallsea
* @version 1.0
*/
@RestController
@RequestMapping("/servlet")
public class BusController
{
@RequestMapping(value = "/{funcNo}")
public String invoke(@PathVariable String funcNo,@RequestParam HashMap<String,String> paramMap)
{
DataMap dataMap = new DataMap();
dataMap.putAll(paramMap);
Result result = new Client().invoke(funcNo, dataMap);
return JsonHelper.toJSONString(result);
}
}
普通调用bus服务
- 通过
new Client()
实例化一个调用的客户端,调用默认客户端。
客户端连接配置:
wueasy :
bus :
#客户端配置
client :
base : #默认客户端配置
group : wueasy-demo
minClientConnection : 5 #client最小连接数
maxClientConnection : 20 #client最大连接数
requestTimeout : 60000 #请求超时时间(毫秒)
java调用demo:
Client client = new Client();//实例化一个客户端
DataMap dataMap = new DataMap();//请求参数对象
dataMap.put("name","wueasy");
Result result = client.invoke("D1000", dataMap);//调用服务获取调用结果
result.getErrorNo();//错误码,0 调用成功,其它值调用失败
result.getErrorInfo();//获取执行消息/错误消息
多个客户端调用说明
客户端同时存在多个,需要调用不同的服务。
提供两种方式调用
实例化方式调用
- 通过
new Client()
实例化一个默认的客户端,调用默认客户端。 - 通过
new Client("demo2")
实例化第二个客户端,通过实例化的参数控制调用的客户端。
多个客户端连接配置:
wueasy :
bus :
#客户端配置
client :
base : #默认客户端配置
group : wueasy-demo
minClientConnection : 5 #client最小连接数
maxClientConnection : 20 #client最大连接数
requestTimeout : 60000 #请求超时时间(毫秒)
demo2: #客户端2
group : wueasy-demo2
minClientConnection : 5 #client最小连接数
maxClientConnection : 20 #client最大连接数
requestTimeout : 60000 #请求超时时间(毫秒)
java调用demo:
Client client = new Client();//实例化一个默认的客户端(base)
client = new Client("demo2");//实例化第二个客户端(demo2)
DataMap dataMap = new DataMap();//请求参数对象
dataMap.put("name","wueasy");
Result result = client.invoke("D1000", dataMap);//调用服务获取调用结果
result.getErrorNo();//错误码,0 调用成功,其它值调用失败
result.getErrorInfo();//获取执行消息/错误消息
正则表达式方式调用
通过正则表达式匹配功能号,调用不同的微服务。
- 配置客户端调用规则
route
,可以配置多个规则 - 配置客户端
clientId
,客户端的key
,例如下面:demo2
或base
,由于base
是默认的,所以不用配置 - 配置路由规则
rule
,正则表达式,如果满足此正则表达式,那么new Client()
会自动找到demo2
的实例。
通过
new Client()
匹配路由规则,自动调用不同的微服务。
多个客户端连接配置:
wueasy :
bus :
route: #客户端路由配置规则
- clientId: demo2 #客户端id
rule: ^[D][0-9]{4}$ #路由规则,正则表达式
#客户端配置
client :
base : #默认客户端配置
group : wueasy-demo
minClientConnection : 5 #client最小连接数
maxClientConnection : 20 #client最大连接数
requestTimeout : 60000 #请求超时时间(毫秒)
demo2: #客户端2
group : wueasy-demo2
minClientConnection : 5 #client最小连接数
maxClientConnection : 20 #client最大连接数
requestTimeout : 60000 #请求超时时间(毫秒)
java调用demo:
Client client = new Client();//实例化一个默认的客户端
DataMap dataMap = new DataMap();//请求参数对象
dataMap.put("name","wueasy");
Result result = client.invoke("D1000", dataMap);//调用服务获取调用结果
result.getErrorNo();//错误码,0 调用成功,其它值调用失败
result.getErrorInfo();//获取执行消息/错误消息