| 接口 | 说明 |
|---|---|
| DataConverter |
数据转换器(JavaBean -> JSON byte[])
|
| 类 | 说明 |
|---|---|
| GsonDataConverter |
GSON数据转换器
|
| MultiHostOkHttpClient |
支持均衡负载的OkHttpClient(简单的示例模板, 建议自行实现)
Java:
LoadBalancedHostManager hostManager = new LoadBalancedHostManager()
.setHostArray(new String[]{
"http://127.0.0.1:8080",
"http://127.0.0.1:8081"
});
LoadBalancedInspectManager inspectManager = new LoadBalancedInspectManager()
.setHostManager(hostManager)
.setInspectInterval(5000L)
.setInspector(new TelnetLoadBalanceInspector());
MultiHostOkHttpClient client = new MultiHostOkHttpClient()
.setHostManager(hostManager)
.setMaxThreads(256)
.setMaxThreadsPerHost(256)
.setPassiveBlockDuration(30000L)
.setConnectTimeout(3000L)
.setWriteTimeout(10000L)
.setReadTimeout(10000L);
Spring MVC: 注册了SlateServletContextListener的场合
<bean id="loadBalancedHostManager" class="sviolet.slate.common.x.net.loadbalance.LoadBalancedHostManager">
<property name="hosts" value="http://127.0.0.1:8081,http://127.0.0.1:8082"/>
</bean>
<bean id="loadBalancedInspector" class="sviolet.slate.common.x.net.loadbalance.LoadBalancedInspectManager">
<property name="hostManager" ref="loadBalancedHostManager"/>
<property name="inspectInterval" value="5000"/>
</bean>
<bean id="multiHostOkHttpClient" class="sviolet.slate.common.x.net.loadbalance.classic.MultiHostOkHttpClient">
<property name="hostManager" ref="loadBalancedHostManager"/>
<property name="maxThreads" value="256"/>
<property name="maxThreadsPerHost" value="256"/>
<property name="passiveBlockDuration" value="30000"/>
<property name="connectTimeout" value="3000"/>
<property name="writeTimeout" value="10000"/>
<property name="readTimeout" value="10000"/>
</bean>
Spring MVC: 没注册SlateServletContextListener的场合, 需要设置destroy-method="close"
<bean id="loadBalancedHostManager" class="sviolet.slate.common.x.net.loadbalance.LoadBalancedHostManager">
<property name="hosts" value="http://127.0.0.1:8081,http://127.0.0.1:8082"/>
</bean>
<bean id="loadBalancedInspector" class="sviolet.slate.common.x.net.loadbalance.LoadBalancedInspectManager"
destroy-method="close">
<property name="hostManager" ref="loadBalancedHostManager"/>
<property name="inspectInterval" value="5000"/>
</bean>
<bean id="multiHostOkHttpClient" class="sviolet.slate.common.x.net.loadbalance.classic.MultiHostOkHttpClient">
<property name="hostManager" ref="loadBalancedHostManager"/>
<property name="maxThreads" value="256"/>
<property name="maxThreadsPerHost" value="256"/>
<property name="passiveBlockDuration" value="30000"/>
<property name="connectTimeout" value="3000"/>
<property name="writeTimeout" value="10000"/>
<property name="readTimeout" value="10000"/>
</bean>
|
| MultiHostOkHttpClient.BeanCallback<T> |
请求回调(获得JavaBean响应体)
|
| MultiHostOkHttpClient.BytesCallback |
请求回调(获得byte[]响应体)
|
| MultiHostOkHttpClient.InputStreamCallback |
请求回调(获得InputStream响应体)
|
| MultiHostOkHttpClient.Request |
请求(该对象非线程安全, 请勿多线程操作同一个对象)
|
| MultiHostOkHttpClient.ResponsePackage |
响应包
|
| MultiHostOkHttpClient.ResponsePackageCallback |
请求回调(通用)
|
| MultiHostOkHttpClient.Settings |
客户端配置
|
| MultiHostOkHttpClient.Stub |
持有该对象可以发起请求取消操作(异步)
|
| SimpleOkHttpClient |
简化版MultiHostOkHttpClient (Spring专用, 依赖spring-beans包)
在MultiHostOkHttpClient的基础上, 封装了LoadBalancedHostManager和LoadBalancedInspectManager, 简化了配置, 免去了配置三个Bean的麻烦
1.配置被简化, 如需高度定制, 请使用LoadBalancedHostManager + LoadBalancedInspectManager + MultiHostOkHttpClient 2.内置的LoadBalancedInspectManager采用TELNET方式探测后端(不可自定义探测方式, 但可以配置为HttpGet探测方式) 3.屏蔽了setHostManager()方法, 调用会抛出异常 4.实现了DisposableBean, 在Spring容器中会自动销毁 Java:
SimpleOkHttpClient client = new SimpleOkHttpClient()
.setHosts("http://127.0.0.1:8081,http://127.0.0.1:8082")
.setInitiativeInspectInterval(5000L)
.setMaxThreads(256)
.setMaxThreadsPerHost(256)
.setPassiveBlockDuration(30000L)
.setConnectTimeout(3000L)
.setWriteTimeout(10000L)
.setReadTimeout(10000L);
Spring MVC:
<bean id="simpleOkHttpClient" class="sviolet.slate.common.x.net.loadbalance.classic.SimpleOkHttpClient">
<property name="hosts" value="http://127.0.0.1:8081,http://127.0.0.1:8082"/>
<property name="initiativeInspectInterval" value="5000"/>
<property name="maxThreads" value="256"/>
<property name="maxThreadsPerHost" value="256"/>
<property name="passiveBlockDuration" value="30000"/>
<property name="connectTimeout" value="3000"/>
<property name="writeTimeout" value="10000"/>
<property name="readTimeout" value="10000"/>
</bean>
|
| 异常错误 | 说明 |
|---|---|
| HttpRejectException |
Http请求拒绝异常(网络请求发送后的异常, HTTP响应码不为2XX)
|
| NoHostException |
当前没有可发送的后端(网络请求发送前的异常, 准备阶段异常)
|
| RequestBuildException |
请求初始化异常(通常是网络请求发送前的异常, 准备阶段异常)
|
| RequestConvertException |
请求报文体JavaBean转换成byte[]失败
|
| ResponseConvertException |
byte[]转换成响应报文体JavaBean失败
|