public class SimpleOkHttpClient extends MultiHostOkHttpClient implements java.io.Closeable, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.DisposableBean
简化版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>
MultiHostOkHttpClientMultiHostOkHttpClient.BeanCallback<T>, MultiHostOkHttpClient.BytesCallback, MultiHostOkHttpClient.InputStreamCallback, MultiHostOkHttpClient.Request, MultiHostOkHttpClient.ResponsePackage, MultiHostOkHttpClient.ResponsePackageCallback, MultiHostOkHttpClient.Settings, MultiHostOkHttpClient.StubLOG_CONFIG_ALL, LOG_CONFIG_BLOCK, LOG_CONFIG_DEFAULT, LOG_CONFIG_NONE, LOG_CONFIG_REAL_URL, VERBOSE_LOG_CONFIG_ALL, VERBOSE_LOG_CONFIG_DEFAULT, VERBOSE_LOG_CONFIG_NONE, VERBOSE_LOG_CONFIG_RAW_URL, VERBOSE_LOG_CONFIG_REQUEST_INPUTS, VERBOSE_LOG_CONFIG_REQUEST_STRING_BODY, VERBOSE_LOG_CONFIG_RESPONSE_CODE| 构造器和说明 |
|---|
SimpleOkHttpClient() |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
afterPropertiesSet() |
void |
close() |
void |
destroy() |
java.lang.String |
printHostsStatus(java.lang.String prefix)
文本方式输出当前远端列表和状态
|
SimpleOkHttpClient |
setHostArray(java.lang.String[] hosts)
[线程安全/异步生效/可运行时修改]
设置/刷新远端列表, 该方法可以反复调用设置新的后端(但不是同步生效)
|
MultiHostOkHttpClient |
setHostManager(sviolet.slate.common.x.net.loadbalance.LoadBalancedHostManager hostManager)
已过时。
禁用该方法
|
SimpleOkHttpClient |
setHosts(java.lang.String hosts)
[线程安全/异步生效/可运行时修改]
设置/刷新远端列表, 该方法可以反复调用设置新的后端(但不是同步生效)
|
SimpleOkHttpClient |
setHttpGetInspector(java.lang.String urlSuffix)
[可运行时修改]
将主动探测器从TELNET型修改为HTTP-GET型
|
SimpleOkHttpClient |
setInitiativeInspectInterval(long initiativeInspectInterval)
[线程安全/异步生效/可运行时修改]
设置主动探测间隔 (主动探测器)
|
SimpleOkHttpClient |
setInspectorVerboseLog(boolean verboseLog)
[线程安全/异步生效/可运行时修改]
true: 主动探测器打印更多的日志, 默认false
|
SimpleOkHttpClient |
setReturnNullIfAllBlocked(boolean returnNullIfAllBlocked)
[可运行时修改]
如果设置为false(默认), 当所有远端都被阻断时, nextHost方法返回一个后端.
|
MultiHostOkHttpClient |
setTag(java.lang.String tag)
[可运行时修改]
设置客户端的标识
|
MultiHostOkHttpClient |
setVerboseLog(boolean verboseLog)
[线程安全/异步生效/可运行时修改]
true: INFO级别可打印更多的日志(请求报文/响应码等), 默认false
|
void |
start()
手动开始主动探测器
若SimpleOkHttpClient在Spring中注册为Bean, 则无需调用此方法, 主动探测器会在Spring启动后自动开始.
|
java.lang.String |
toString() |
buildGetRequest, buildPostRequest, createOkHttpClient, get, getTag, isSucceed, needBlock, post, setConnectTimeout, setCookieJar, setDataConverter, setDns, setEncode, setHeaders, setHttpCodeNeedBlock, setLogConfig, setMaxIdleConnections, setMaxReadLength, setMaxThreads, setMaxThreadsPerHost, setMediaType, setPassiveBlockDuration, setProxy, setReadTimeout, setRecoveryCoefficient, setRequestTraceEnabled, setSSLSocketFactory, setTxTimerEnabled, setVerboseLogConfig, setWriteTimeoutpublic void afterPropertiesSet()
throws java.lang.Exception
afterPropertiesSet 在接口中 org.springframework.beans.factory.InitializingBeanjava.lang.Exceptionpublic void start()
手动开始主动探测器
若SimpleOkHttpClient在Spring中注册为Bean, 则无需调用此方法, 主动探测器会在Spring启动后自动开始.
若SimpleOkHttpClient没有被注册为Bean(直接new出来的), 则需要调用此方法开始主动探测器.
public void close()
close 在接口中 java.io.Closeableclose 在接口中 java.lang.AutoCloseablepublic void destroy()
destroy 在接口中 org.springframework.beans.factory.DisposableBeanpublic java.lang.String toString()
toString 在类中 MultiHostOkHttpClientpublic java.lang.String printHostsStatus(java.lang.String prefix)
prefix - 文本前缀@Deprecated public MultiHostOkHttpClient setHostManager(sviolet.slate.common.x.net.loadbalance.LoadBalancedHostManager hostManager)
MultiHostOkHttpClientsetHostManager 在类中 MultiHostOkHttpClienthostManager - 远端管理器public SimpleOkHttpClient setHosts(java.lang.String hosts)
hosts - 远端列表, 格式:"http://127.0.0.1:8081/,http://127.0.0.1:8082/"public SimpleOkHttpClient setHostArray(java.lang.String[] hosts)
hosts - 远端列表public SimpleOkHttpClient setInitiativeInspectInterval(long initiativeInspectInterval)
initiativeInspectInterval - 检测间隔ms, > 0 , 建议 > 5000public SimpleOkHttpClient setReturnNullIfAllBlocked(boolean returnNullIfAllBlocked)
public SimpleOkHttpClient setHttpGetInspector(java.lang.String urlSuffix)
urlSuffix - 探测页面URL(例如:http://127.0.0.1:8080/health, 则在此处设置/health), 设置为+telnet+则使用默认的TELNET型public SimpleOkHttpClient setInspectorVerboseLog(boolean verboseLog)
verboseLog - true: 主动探测器打印更多的日志, 默认falsepublic MultiHostOkHttpClient setVerboseLog(boolean verboseLog)
setVerboseLog 在类中 MultiHostOkHttpClientverboseLog - true:打印更多的调试日志, 默认关闭public MultiHostOkHttpClient setTag(java.lang.String tag)
setTag 在类中 MultiHostOkHttpClienttag - 标识