public class ClientFactory extends java.lang.Object
// get a FaceApi synchronized instance FaceApi client = ClientFactory.builder() .setHostAndPort("127.0.0.1",9090) .setTimeout(10,TimeUnit.SECONDS) .build(FaceApi.class,FaceApiThriftClient.class);
Modifier and Type | Class and Description |
---|---|
class |
ClientFactory.ListenableFutureDecorator<A,V>
ListenableFuture 接口的装饰类,
用于确保异步调用结束时释放异步接口实例,参见releaseInstance(Object) |
Modifier | Constructor and Description |
---|---|
protected |
ClientFactory() |
Modifier and Type | Method and Description |
---|---|
<V> void |
addCallback(com.google.common.util.concurrent.ListenableFuture<V> future,
com.google.common.util.concurrent.FutureCallback<? super V> callback) |
<T> T |
applyInstance(java.lang.Class<T> interfaceClass)
thrift client 实例不是线程安全的,只可单线程独占使用,所以每次调用实例时要向资源池
GenericObjectPool
申请一个interfaceClass 的实例,用完后调用releaseInstance(Object) 归还,其他线程才可重复使用。 |
<I,T extends I,O> |
build(java.lang.Class<I> interfaceClass,
java.lang.Class<T> thriftyImplClass,
java.lang.Class<O> destClass)
构造
interfaceClass 实例thriftyImplClass为null时,假设destClass为thrifty 异步实例类型 |
<I,O,T extends I> |
build(java.lang.Class<T> thriftyImplClass,
java.lang.Class<O> destClass)
|
static ClientFactory |
builder() |
<T> void |
closeObjectPool(java.lang.Class<T> interfaceClass) |
java.util.concurrent.Executor |
getExecutor() |
com.google.common.net.HostAndPort |
getHostAndPort() |
<T> void |
releaseInstance(T instance)
释放
instance 实例使用权,必须和applyInstance(Class) 配对使用 |
ClientFactory |
setClientName(java.lang.String clientName) |
ClientFactory |
setConnector(com.facebook.nifty.client.NiftyClientConnector<? extends com.facebook.nifty.client.NiftyClientChannel> connector) |
ClientFactory |
setConnectTimeout(io.airlift.units.Duration connectTimeout) |
<T> ClientFactory |
setDecorator(com.google.common.base.Function<T,T> decorator) |
ClientFactory |
setExecutor(java.util.concurrent.Executor executor) |
ClientFactory |
setHostAndPort(com.google.common.net.HostAndPort hostAndPort) |
ClientFactory |
setHostAndPort(java.lang.String host) |
ClientFactory |
setHostAndPort(java.lang.String host,
int port) |
ClientFactory |
setManager(com.facebook.swift.service.ThriftClientManager clientManager) |
ClientFactory |
setMaxFrameSize(int maxFrameSize) |
ClientFactory |
setPoolConfig(org.apache.commons.pool2.impl.GenericObjectPoolConfig poolConfig)
设置资源池配置参数
|
ClientFactory |
setReadTimeout(io.airlift.units.Duration readTimeout) |
ClientFactory |
setReceiveTimeout(io.airlift.units.Duration receiveTimeout) |
ClientFactory |
setSocksProxy(com.google.common.net.HostAndPort socksProxy) |
ClientFactory |
setThriftClientConfig(com.facebook.swift.service.ThriftClientConfig thriftClientConfig) |
ClientFactory |
setTimeout(io.airlift.units.Duration timeout)
set all timeout arguments
|
ClientFactory |
setTimeout(long time,
java.util.concurrent.TimeUnit unit) |
ClientFactory |
setWriteTimeout(io.airlift.units.Duration writeTimeout) |
boolean |
testConnect()
测试当前连接是否有效
|
java.lang.String |
toString() |
<A,V> ClientFactory.ListenableFutureDecorator<A,V> |
wrap(A async,
com.google.common.util.concurrent.ListenableFuture<V> future)
将
future 封装为ClientFactory.ListenableFutureDecorator 实例 |
protected ClientFactory()
public ClientFactory setManager(com.facebook.swift.service.ThriftClientManager clientManager)
public ClientFactory setThriftClientConfig(com.facebook.swift.service.ThriftClientConfig thriftClientConfig)
public ClientFactory setTimeout(io.airlift.units.Duration timeout)
time
- unit
- setConnectTimeout(Duration)
,
setReceiveTimeout(Duration)
,
setReadTimeout(Duration)
,
setWriteTimeout(Duration)
public ClientFactory setTimeout(long time, java.util.concurrent.TimeUnit unit)
public ClientFactory setConnectTimeout(io.airlift.units.Duration connectTimeout)
public ClientFactory setReceiveTimeout(io.airlift.units.Duration receiveTimeout)
public ClientFactory setReadTimeout(io.airlift.units.Duration readTimeout)
public ClientFactory setWriteTimeout(io.airlift.units.Duration writeTimeout)
public ClientFactory setSocksProxy(com.google.common.net.HostAndPort socksProxy)
public ClientFactory setMaxFrameSize(int maxFrameSize)
public ClientFactory setHostAndPort(com.google.common.net.HostAndPort hostAndPort)
public ClientFactory setHostAndPort(java.lang.String host, int port)
public ClientFactory setHostAndPort(java.lang.String host)
public ClientFactory setConnector(com.facebook.nifty.client.NiftyClientConnector<? extends com.facebook.nifty.client.NiftyClientChannel> connector)
public ClientFactory setClientName(java.lang.String clientName)
public ClientFactory setPoolConfig(org.apache.commons.pool2.impl.GenericObjectPoolConfig poolConfig)
poolConfig
- public ClientFactory setExecutor(java.util.concurrent.Executor executor)
public java.util.concurrent.Executor getExecutor()
public <T> ClientFactory setDecorator(com.google.common.base.Function<T,T> decorator)
public com.google.common.net.HostAndPort getHostAndPort()
public <T> void closeObjectPool(java.lang.Class<T> interfaceClass)
public <T> T applyInstance(java.lang.Class<T> interfaceClass)
GenericObjectPool
申请一个interfaceClass
的实例,用完后调用releaseInstance(Object)
归还,其他线程才可重复使用。interfaceClass
- 接口类,不可为null
public <T> void releaseInstance(T instance)
instance
实例使用权,必须和applyInstance(Class)
配对使用instance
- 接口实例public static ClientFactory builder()
public <I,T extends I,O> O build(java.lang.Class<I> interfaceClass, java.lang.Class<T> thriftyImplClass, java.lang.Class<O> destClass)
interfaceClass
实例I
- 接口类O
- 返回实例类型T
- 基于thrifty实现接口类的实例类型interfaceClass
- thriftyImplClass
- destClass
- 返回的实例类型,如果interfaceClass和thriftyImplClass为null,必须有参数为ClientFactory
的构造函数
否则必须有参数类型为interfaceClass的构造函数destClass
实例public <I,O,T extends I> O build(java.lang.Class<T> thriftyImplClass, java.lang.Class<O> destClass)
thriftyImplClass
- destClass
- build(Class, Class, Class)
public boolean testConnect()
true
,否则返回false
public <V> void addCallback(com.google.common.util.concurrent.ListenableFuture<V> future, com.google.common.util.concurrent.FutureCallback<? super V> callback)
public java.lang.String toString()
toString
in class java.lang.Object
public <A,V> ClientFactory.ListenableFutureDecorator<A,V> wrap(A async, com.google.common.util.concurrent.ListenableFuture<V> future)
future
封装为ClientFactory.ListenableFutureDecorator
实例async
- thrift 异步接口实例future
- 异步返回结果实例ClientFactory.ListenableFutureDecorator
实例Copyright © 2019. All rights reserved.