Interface PoolFactory
Pool.
Every pool needs to have at least one locator or server
added to it. Locators should be added unless direct connections to cache servers are desired.
The setter methods are used to specify non-default values for the other pool properties.
Once it is configured create(java.lang.String) will produce an instance.
The factory can be restored to its default configuration by calling reset().
Instances of this interface can be created by calling PoolManager.createFactory().
If a subscription is going to be made using a pool then subscriptions
must be enabled on the pool. Subscriptions are made using these
APIs:
QueryService.newCq(String, CqAttributes)QueryService.newCq(String, CqAttributes, boolean)QueryService.newCq(String, String, CqAttributes)QueryService.newCq(String, String, CqAttributes, boolean)Region.registerInterest(Object)Region.registerInterest(Object, boolean)Region.registerInterest(Object, InterestResultPolicy)Region.registerInterest(Object, InterestResultPolicy, boolean)Region.registerInterestRegex(String)Region.registerInterestRegex(String, boolean)Region.registerInterestRegex(String, InterestResultPolicy)Region.registerInterestRegex(String, InterestResultPolicy, boolean)
- Since:
- GemFire 5.7
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intThe default amount of time, in milliseconds, which we will wait for a free connection if max connections is set and all of the connections are in use.static final longThe default amount of time in milliseconds, to wait for a connection to become idlestatic final intThe default interval in which the pool will check to see if a connection to a given server should be moved to a different server to improve the load balance.static final intThe default maximum number of connections to createstatic final intThe default number of connections to initially createstatic final booleanThe default value for whether to use multiuser mode.static final longThe default frequency, in milliseconds, to ping servers.static final booleanThe default value for whether to have single hop optimisations enabled.static final intThe default amount of time, in milliseconds, to wait for a response from a serverstatic final intThe default number of times to retry an operation after a timeout or exception.static final intThe default amount of time, in milliseconds, which we will wait for a server connection if max connections is set and there is no free connections towards designated server.static final StringThe default server group.static final intDefault size in bytes of the socket buffer on each connection established.static final intThe default amount of time, in milliseconds, socket timeout when the client connects to the servers/locators.static final SocketFactoryThe default value for the socket factory Current valueSocketFactory.DEFAULTstatic final intThe default frequency, in milliseconds, that client statistics will be sent to the server.static final intThe default amount of time, in milliseconds, to wait before sending an acknowledgement to the server about events received from the subscriptions.static final booleanThe default value for whether to establish a server to client subscription.static final intThe default amount of time, in milliseconds, that messages sent from a server to a client will be tracked.static final intThe default redundancy for servers holding subscriptions established by this clientstatic final intThe default number of server "ping" intervals that can elapse with no activity before a subscription connection is deemed dead and failover is initiated.static final booleanDeprecated.Since Geode 1.10.0. -
Method Summary
Modifier and TypeMethodDescriptionaddLocator(String host, int port) Add a locator, given its host and port, to this factory.Add a server, given its host and port, to this factory.Create a new Pool for connecting a client to a set of GemFire Cache Servers.reset()Resets the configuration of this factory to its defaults.setFreeConnectionTimeout(int connectionTimeout) Sets the free connection timeout for this pool.setIdleTimeout(long idleTimeout) Set the amount of time a connection can be idle before expiring the connection.setLoadConditioningInterval(int loadConditioningInterval) Sets the load conditioning interval for this pool.setMaxConnections(int maxConnections) Set the max number of client to server connections that the pool will create.setMinConnections(int minConnections) Set the minimum number of connections to keep available at all times.setMultiuserAuthentication(boolean enabled) If set totruethen the created pool can be used by multiple authenticated users.setPingInterval(long pingInterval) How often to ping servers to verify that they are still alive.setPRSingleHopEnabled(boolean enabled) By default setPRSingleHopEnabled istruein which case the client is aware of the location of partitions on servers hostingregionswithDataPolicy.PARTITION.setReadTimeout(int timeout) Sets the number of milliseconds to wait for a response from a server before timing out the operation and trying another server (if any are available).setRetryAttempts(int retryAttempts) Set the number of times to retry a request after timeout/exception.setServerConnectionTimeout(int serverConnectionTimeout) Sets the server connection timeout for this pool.setServerGroup(String group) Configures the group that all servers this pool connects to must belong to.setSocketBufferSize(int bufferSize) Sets the socket buffer size for each connection made in this pool.setSocketConnectTimeout(int socketConnectTimeout) Sets the socket connect timeout for this pool.setSocketFactory(SocketFactory socketFactory) Set the socket factory used by this pool to create connections to both locators (if configured usingaddLocator(String, int)) and servers.setStatisticInterval(int statisticInterval) How often to send client statistics to the server.setSubscriptionAckInterval(int ackInterval) Sets the interval in milliseconds to wait before sending acknowledgements to the cache server for events received from the server subscriptions.setSubscriptionEnabled(boolean enabled) If set totruethen the created pool will have server-to-client subscriptions enabled.setSubscriptionMessageTrackingTimeout(int messageTrackingTimeout) Sets the messageTrackingTimeout attribute which is the time-to-live period, in milliseconds, for subscription events the client has received from the server.setSubscriptionRedundancy(int redundancy) Sets the redundancy level for this pools server-to-client subscriptions.setSubscriptionTimeoutMultiplier(int multiplier) A server has an inactivity monitor that ensures a message is sent to a client at least once a minute (60,000 milliseconds).setThreadLocalConnections(boolean threadLocalConnections) Deprecated.Since Geode 1.10.0.
-
Field Details
-
DEFAULT_SOCKET_CONNECT_TIMEOUT
static final int DEFAULT_SOCKET_CONNECT_TIMEOUTThe default amount of time, in milliseconds, socket timeout when the client connects to the servers/locators.Current value:
59000.- See Also:
-
DEFAULT_FREE_CONNECTION_TIMEOUT
static final int DEFAULT_FREE_CONNECTION_TIMEOUTThe default amount of time, in milliseconds, which we will wait for a free connection if max connections is set and all of the connections are in use.Current value:
10000.- See Also:
-
DEFAULT_SERVER_CONNECTION_TIMEOUT
static final int DEFAULT_SERVER_CONNECTION_TIMEOUTThe default amount of time, in milliseconds, which we will wait for a server connection if max connections is set and there is no free connections towards designated server.Current value:
0.- See Also:
-
DEFAULT_LOAD_CONDITIONING_INTERVAL
static final int DEFAULT_LOAD_CONDITIONING_INTERVALThe default interval in which the pool will check to see if a connection to a given server should be moved to a different server to improve the load balance.Current value:
300,000(which is 5 minutes).- See Also:
-
DEFAULT_SOCKET_BUFFER_SIZE
static final int DEFAULT_SOCKET_BUFFER_SIZEDefault size in bytes of the socket buffer on each connection established.Current value:
32768.- See Also:
-
DEFAULT_READ_TIMEOUT
static final int DEFAULT_READ_TIMEOUTThe default amount of time, in milliseconds, to wait for a response from a serverCurrent value:
10000.- See Also:
-
DEFAULT_MIN_CONNECTIONS
static final int DEFAULT_MIN_CONNECTIONSThe default number of connections to initially createCurrent value:
1.- See Also:
-
DEFAULT_MAX_CONNECTIONS
static final int DEFAULT_MAX_CONNECTIONSThe default maximum number of connections to createCurrent value:
-1.- See Also:
-
DEFAULT_IDLE_TIMEOUT
static final long DEFAULT_IDLE_TIMEOUTThe default amount of time in milliseconds, to wait for a connection to become idleCurrent value:
5000.- See Also:
-
DEFAULT_RETRY_ATTEMPTS
static final int DEFAULT_RETRY_ATTEMPTSThe default number of times to retry an operation after a timeout or exception.Current value:
-1.- See Also:
-
DEFAULT_PING_INTERVAL
static final long DEFAULT_PING_INTERVALThe default frequency, in milliseconds, to ping servers.Current value:
10000.- See Also:
-
DEFAULT_STATISTIC_INTERVAL
static final int DEFAULT_STATISTIC_INTERVALThe default frequency, in milliseconds, that client statistics will be sent to the server.Current value:
-1.- See Also:
-
DEFAULT_THREAD_LOCAL_CONNECTIONS
Deprecated.Since Geode 1.10.0. Thread local connections are ignored. Will be removed in future major release.The default value for whether connections should have affinity to the thread that last used them.Current value:
false.- See Also:
-
DEFAULT_SUBSCRIPTION_ENABLED
static final boolean DEFAULT_SUBSCRIPTION_ENABLEDThe default value for whether to establish a server to client subscription.Current value:
false.- See Also:
-
DEFAULT_SUBSCRIPTION_REDUNDANCY
static final int DEFAULT_SUBSCRIPTION_REDUNDANCYThe default redundancy for servers holding subscriptions established by this clientCurrent value:
0.- See Also:
-
DEFAULT_SUBSCRIPTION_MESSAGE_TRACKING_TIMEOUT
static final int DEFAULT_SUBSCRIPTION_MESSAGE_TRACKING_TIMEOUTThe default amount of time, in milliseconds, that messages sent from a server to a client will be tracked. The tracking is done to minimize duplicate events.Current value:
900000.- See Also:
-
DEFAULT_SUBSCRIPTION_ACK_INTERVAL
static final int DEFAULT_SUBSCRIPTION_ACK_INTERVALThe default amount of time, in milliseconds, to wait before sending an acknowledgement to the server about events received from the subscriptions.Current value:
100.- See Also:
-
DEFAULT_SUBSCRIPTION_TIMEOUT_MULTIPLIER
static final int DEFAULT_SUBSCRIPTION_TIMEOUT_MULTIPLIERThe default number of server "ping" intervals that can elapse with no activity before a subscription connection is deemed dead and failover is initiated.Current value: 0
- See Also:
-
DEFAULT_SERVER_GROUP
The default server group.Current value:
"".- See Also:
-
DEFAULT_PR_SINGLE_HOP_ENABLED
static final boolean DEFAULT_PR_SINGLE_HOP_ENABLEDThe default value for whether to have single hop optimisations enabled.Current value:
true.- Since:
- GemFire 6.5
- See Also:
-
DEFAULT_MULTIUSER_AUTHENTICATION
static final boolean DEFAULT_MULTIUSER_AUTHENTICATIONThe default value for whether to use multiuser mode.Current value:
false.- Since:
- GemFire 6.5
- See Also:
-
DEFAULT_SOCKET_FACTORY
The default value for the socket factory Current valueSocketFactory.DEFAULT
-
-
Method Details
-
setSocketConnectTimeout
Sets the socket connect timeout for this pool. The number of milli seconds specified as socket timeout when the client connects to the servers/locators. A timeout of zero is interpreted as an infinite timeout. The connection will then block until established or an error occurs.- Parameters:
socketConnectTimeout- timeout in milliseconds when the client connects to the servers- Returns:
- a reference to
this - Throws:
IllegalArgumentException- ifsocketConnectTimeoutis less than or equal to-1.
-
setFreeConnectionTimeout
Sets the free connection timeout for this pool. If the pool has a max connections setting, operations will block if all of the connections are in use. The free connection timeout specifies how long those operations will block waiting for a free connection before receiving anAllConnectionsInUseException. If max connections is not set this setting has no effect.- Parameters:
connectionTimeout- the connection timeout in milliseconds- Returns:
- a reference to
this - Throws:
IllegalArgumentException- ifconnectionTimeoutis less than or equal to0.- See Also:
-
setServerConnectionTimeout
Sets the server connection timeout for this pool. If the pool has a max connections setting, operations will block if there is no free connection towards specific server. The server connection timeout specifies how long those operations will block waiting for a free connection towards specific server before receiving anAllConnectionsInUseException. If max connections is not set this setting has no effect. It differs from "setFreeConnectionTimeout" which sets wait time for any server connection in the pool, where this sets wait time for a free connection to a specific server.- Parameters:
serverConnectionTimeout- the connection timeout in milliseconds- Returns:
- a reference to
this - Throws:
IllegalArgumentException- ifserverConnectionTimeoutis less than0.- See Also:
-
setLoadConditioningInterval
Sets the load conditioning interval for this pool. This interval controls how frequently the pool will check to see if a connection to a given server should be moved to a different server to improve the load balance.A value of
-1disables load conditioning- Parameters:
loadConditioningInterval- the connection lifetime in milliseconds- Returns:
- a reference to
this - Throws:
IllegalArgumentException- ifconnectionLifetimeis less than-1.
-
setSocketBufferSize
Sets the socket buffer size for each connection made in this pool. Large messages can be received and sent faster when this buffer is larger. Larger buffers also optimize the rate at which servers can send events for client subscriptions.- Parameters:
bufferSize- the size of the socket buffers used for reading and writing on each connection in this pool.- Returns:
- a reference to
this - Throws:
IllegalArgumentException- ifbufferSizeis less than or equal to0.
-
setThreadLocalConnections
Deprecated.Since Geode 1.10.0. Thread local connections are ignored. Will be removed in future major release.Sets the thread local connections policy for this pool. Iftruethen any time a thread goes to use a connection from this pool it will check a thread local cache and see if it already has a connection in it. If so it will use it. If not it will get one from this pool and cache it in the thread local. This gets rid of thread contention for the connections but increases the number of connections the servers see.If
falsethen connections are returned to the pool as soon as the operation being done with the connection completes. This allows connections to be shared amonst multiple threads keeping the number of connections down.- Parameters:
threadLocalConnections- iftruethen enable thread local connections.- Returns:
- a reference to
this
-
setReadTimeout
Sets the number of milliseconds to wait for a response from a server before timing out the operation and trying another server (if any are available).- Parameters:
timeout- number of milliseconds to wait for a response from a server- Returns:
- a reference to
this - Throws:
IllegalArgumentException- iftimeoutis less than0.
-
setMinConnections
Set the minimum number of connections to keep available at all times. When the pool is created, it will create this many connections. If0then connections will not be made until an actual operation is done that requires client-to-server communication.- Parameters:
minConnections- the initial number of connections this pool will create.- Returns:
- a reference to
this - Throws:
IllegalArgumentException- ifminConnectionsis less than0.
-
setMaxConnections
Set the max number of client to server connections that the pool will create. If all of the connections are in use, an operation requiring a client to server connection will block until a connection is available.- Parameters:
maxConnections- the maximum number of connections in the pool. this pool will create. -1 indicates that there is no maximum number of connections- Returns:
- a reference to
this - Throws:
IllegalArgumentException- ifmaxConnectionsis less thanminConnections.- See Also:
-
setIdleTimeout
Set the amount of time a connection can be idle before expiring the connection. If the pool size is greater than the minimum specified bysetMinConnections(int), connections which have been idle for longer than the idleTimeout will be closed.- Parameters:
idleTimeout- The amount of time in milliseconds that an idle connection should live before expiring. -1 indicates that connections should never expire.- Returns:
- a reference to
this - Throws:
IllegalArgumentException- ifidleTimoutis less than-1.
-
setRetryAttempts
Set the number of times to retry a request after timeout/exception.- Parameters:
retryAttempts- The number of times to retry a request after timeout/exception. -1 indicates that a request should be tried against every available server before failing- Returns:
- a reference to
this - Throws:
IllegalArgumentException- ifretryAttemptsis less than-1.
-
setPingInterval
How often to ping servers to verify that they are still alive. Each server will be sent a ping every pingInterval if there has not been any other communication with the server. These pings are used by the server to monitor the health of the client. Make sure that the pingInterval is less than the maximum time between pings allowed by the cache server.- Parameters:
pingInterval- The amount of time in milliseconds between pings.- Returns:
- a reference to
this - Throws:
IllegalArgumentException- ifpingIntervalis less than or equal to0.- See Also:
-
setStatisticInterval
How often to send client statistics to the server. Doing this allowsgfmonto monitor clients.A value of
-1disables the sending of client statistics to the server.- Parameters:
statisticInterval- The amount of time in milliseconds between sends of client statistics to the server.- Returns:
- a reference to
this - Throws:
IllegalArgumentException- ifstatisticIntervalis less than-1.
-
setServerGroup
Configures the group that all servers this pool connects to must belong to.- Parameters:
group- the server group that this pool will connect to. Ifnullor""then all servers will be connected to.- Returns:
- a reference to
this
-
addLocator
Add a locator, given its host and port, to this factory. The locator must be a server locator and will be used to discover other running cache servers and locators. Note that if the host is unknown at the time of this call the locator will still be added. When the pool is used for an operation if the host is still unknown an exception will be thrown.- Parameters:
host- the host name or ip address that the locator is listening on.port- the port that the locator is listening on- Returns:
- a reference to
this - Throws:
IllegalArgumentException- if port is outside the valid range of [0..65535] inclusive.IllegalStateException- if a server has already beenaddedto this factory.
-
addServer
Add a server, given its host and port, to this factory. The server must be a cache server and this client will directly connect to without consulting a server locator. Note that if the host is unknown at the time of this call the server will still be added. When the pool is used for an operation if the host is still unknown an exception will be thrown.- Parameters:
host- the host name or ip address that the server is listening on.port- the port that the server is listening on- Returns:
- a reference to
this - Throws:
IllegalArgumentException- if port is outside the valid range of [0..65535] inclusive.IllegalStateException- if a locator has already beenaddedto this factory.
-
setSubscriptionEnabled
If set totruethen the created pool will have server-to-client subscriptions enabled. If set tofalsethen allSubscription*attributes are ignored at create time.- Parameters:
enabled- whether the created pool will have server-to-client subscriptions enabled- Returns:
- a reference to
this
-
setSubscriptionRedundancy
Sets the redundancy level for this pools server-to-client subscriptions. If0then no redundant copies will be kept on the servers. Otherwise an effort will be made to maintain the requested number of copies of the server-to-client subscriptions. At most one copy per server will be made up to the requested level.- Parameters:
redundancy- the number of redundant servers for this client's subscriptions.- Returns:
- a reference to
this - Throws:
IllegalArgumentException- ifredundancyLevelis less than-1.
-
setSubscriptionMessageTrackingTimeout
Sets the messageTrackingTimeout attribute which is the time-to-live period, in milliseconds, for subscription events the client has received from the server. It's used to minimize duplicate events. Entries that have not been modified for this amount of time are expired from the list- Parameters:
messageTrackingTimeout- number of milliseconds to set the timeout to.- Returns:
- a reference to
this - Throws:
IllegalArgumentException- ifmessageTrackingTimeoutis less than or equal to0.
-
setSubscriptionTimeoutMultiplier
A server has an inactivity monitor that ensures a message is sent to a client at least once a minute (60,000 milliseconds). If a subscription timeout multiplier is set in the client it enables timing out of the subscription feed with failover to another server.The client will time out it's subscription connection after a number of seconds equal to this multiplier times the server's subscription-timeout.
Set this to 2 or more to make sure the client will receive pings from the server before the timeout.
A value of zero (the default) disables timeouts
The resulting timeout will be multiplied by 1.25 in order to avoid race conditions with the server sending its "ping" message.
- Parameters:
multiplier- the subscription timeout multiplier to set- Returns:
- a reference to
this
-
setSubscriptionAckInterval
Sets the interval in milliseconds to wait before sending acknowledgements to the cache server for events received from the server subscriptions.- Parameters:
ackInterval- number of milliseconds to wait before sending event acknowledgements.- Returns:
- a reference to
this - Throws:
IllegalArgumentException- ifackIntervalis less than or equal to0.
-
reset
PoolFactory reset()Resets the configuration of this factory to its defaults.- Returns:
- a reference to
this
-
create
Create a new Pool for connecting a client to a set of GemFire Cache Servers. using this factory's settings for attributes.- Parameters:
name- the name of the pool, used when connecting regions to it- Returns:
- the newly created pool.
- Throws:
IllegalStateException- if a pool withnamealready existsIllegalStateException- if a locator or server has not been added.
-
setPRSingleHopEnabled
By default setPRSingleHopEnabled istruein which case the client is aware of the location of partitions on servers hostingregionswithDataPolicy.PARTITION. Using this information, the client routes the client cache operations directly to the server which is hosting the required partition for the cache operation using a single network hop. This mode works best whensetMaxConnections(int)is set to-1which is the default. This mode causes the client to have more connections to the servers.If setPRSingleHopEnabled is
falsethe client may need to do an extra network hop on servers to go to the required partition for that cache operation. The client will use fewer network connections to the servers.Caution: for
partitionregions withlocal-max-memoryequal to zero, no cache operations mentioned above will be routed to those servers as they do not host any partitions.- Parameters:
enabled- whether Partitioned Region single hop is enabled- Returns:
- a reference to
this - Since:
- GemFire 6.5
-
setMultiuserAuthentication
If set totruethen the created pool can be used by multiple authenticated users.
This setting should only be used for applications that require the client to authenticate itself with the server multiple users.
Note: If set to true, all the client side regions must have their data-policy set to empty.- Parameters:
enabled- whether the created pool can be used by multiple authenticated users- Returns:
- a reference to
this - Since:
- GemFire 6.5
- See Also:
-
setSocketFactory
Set the socket factory used by this pool to create connections to both locators (if configured usingaddLocator(String, int)) and servers. seeSocketFactorySeeProxySocketFactories- Parameters:
socketFactory- TheSocketFactoryto use- Returns:
- a reference to
this - Since:
- Geode 1.13
-