public interface FanOutConnectionConfig extends Config
When starting fan-out, if a fan-out client is unable to connect to the
primary server, it will try again after the specified
retry delay period
.
Upon losing the connection to the primary server the recovery process will
depend upon whether a reconnect timeout
has
been configured. If reconnection is configured, the client will try to
re-establish the connection until the specified amount of time has passed. It
will wait for the configured retry delay period between attempts.
If reconnection succeeds after a lost connection, fan-out will resume
seamlessly. However, if reconnection fails, the replicated topic tree will be
deleted and a new connection attempt will be rescheduled after the
retry delay
.
A load balancer may be used between secondary and primary server. If a load balancer is used and reconnection is configured, the load balancer should be configured for sticky routing.
Modifier and Type | Method and Description |
---|---|
FanOutLinkConfig |
addLink(String name,
String selector)
Adds a topic tree link to be replicated.
|
int |
getConnectionTimeout()
Returns the connection timeout.
|
int |
getInputBufferSize()
Returns the input buffer size.
|
FanOutLinkConfig |
getLink(String name)
Get a named fan-out replication link.
|
List<FanOutLinkConfig> |
getLinks()
Returns a list of the replication links.
|
int |
getMaximumQueueSize()
Returns the maximum queue size.
|
String |
getName()
Gets the connection name.
|
int |
getOutputBufferSize()
Returns the output buffer size.
|
String |
getPassword()
Returns the password.
|
String |
getPrincipal()
Returns the security principal.
|
int |
getReconnectTimeout()
Returns the reconnect timeout value.
|
int |
getRecoveryBufferSize()
Returns the recovery buffer size.
|
int |
getRetryDelay()
Get the retry delay value.
|
String |
getUrl()
Returns the URL of the primary server to connect to.
|
int |
getWriteTimeout()
Returns the write timeout.
|
void |
setConnectionTimeout(int timeout)
Sets the connection timeout.
|
void |
setInputBufferSize(int size)
Sets the input buffer size for the connection.
|
void |
setMaximumQueueSize(int queueSize)
Sets the maximum queue size for messages queued to be sent to the primary
server.
|
void |
setOutputBufferSize(int size)
Sets the output buffer size.
|
void |
setPassword(String password)
Sets a password to be used when authenticating with the primary server.
|
void |
setPrincipal(String principal)
Sets the security principal to use when authenticating with the primary
server.
|
void |
setReconnectTimeout(int timeout)
Sets the overall reconnection timeout value.
|
void |
setRecoveryBufferSize(int size)
Set the recovery buffer size.
|
void |
setRetryDelay(int delay)
Specifies the number of milliseconds to wait after failing to connect or
losing the connection to the primary server before trying to connect
again.
|
void |
setWriteTimeout(int timeout)
Sets the write timeout value.
|
String getName()
String getUrl()
void setRetryDelay(int delay) throws ConfigException
If not explicitly specified, 1000ms (1 second) is assumed.
delay
- retry delay in millisecondsConfigException
- if the interval is invalidint getRetryDelay()
void setPrincipal(String principal) throws ConfigException
By default this will be "" representing an anonymous session.
principal
- the principalConfigException
- if principal
is nullString getPrincipal()
void setPassword(String password) throws ConfigException
If not explicitly specified, it is assumed that no credentials are required for the connection.
password
- the passwordConfigException
- if password
is nullString getPassword()
void setConnectionTimeout(int timeout) throws ConfigException
The value constrains the time taken to establish a TCP connection to the
server. The write timeout
constrains the
time taken to send the connection request. The server is responsible for
limiting the overall time taken to complete a connection once it has
received the request.
If not specified, a value of 2 seconds is used.
timeout
- value in milliseconds. If this exceeds one hour
(3600000ms) a warning will be logged and the time-out will be set
to one hour.ConfigException
- if an illegal timeout value is suppliedint getConnectionTimeout()
void setWriteTimeout(int timeout) throws ConfigException
This only constrains the writing of the initial connection request. If it is not possible to complete the write within this time, the connection is closed.
If not specified, a value of 2 seconds is used.
timeout
- value in milliseconds. If this exceeds one hour
(3600000ms) a warning will be logged and the time-out will be set
to one hour.ConfigException
- if timeout
is invalidint getWriteTimeout()
void setInputBufferSize(int size) throws ConfigException
By default this is the same as the maximum message size. Setting to a larger value may improve throughput. Ideally the value should match the output buffer size configured at the primary server for the connector indicated by the url used for connection.
size
- input buffer size in bytes. This must not be less than the
maximum message size and hence may not be less than 1024ConfigException
- if the input buffer size is invalidint getInputBufferSize()
void setOutputBufferSize(int size) throws ConfigException
By default this is the same as the maximum message size but increasing it can improve throughput.
size
- output buffer size in bytes. This must not be less than the
maximum message size and hence may not be less than 1024ConfigException
- if the output buffer size is invalidint getOutputBufferSize()
void setReconnectTimeout(int timeout) throws ConfigException
This is the total amount of time that a fan-out client will spend attempting to reconnect to the primary server after losing the connection.
If not explicitly specified, a value of 0 is assumed which means that reconnect is not enabled.
timeout
- the period of time (specified in milliseconds) that the
client should allow to pass whilst attempting to reconnect to the
primary server after a disconnection, before abandoning the
reconnection process. A value of zero indicates that reconnection
should not be performed (a new connection may still be attempted
later after the retry
period).ConfigException
- if the timeout value is invalid.int getReconnectTimeout()
void setRecoveryBufferSize(int size) throws ConfigException
If the primary server is configured to support reconnection, a session
established with a non-zero reconnection
timeout
retains a buffer of sent messages. If the session disconnects
and reconnects, this buffer is used to re-send messages that the server
has not received.
If not explicitly specified, 10000 is assumed.
size
- the recovery buffer size in messagesConfigException
- if the specified size
is
negativeint getRecoveryBufferSize()
void setMaximumQueueSize(int queueSize) throws ConfigException
This specifies the maximum size that the queue of messages for the primary server may reach before the connection is closed. This must be able to cater for messages that may be queued whilst disconnected awaiting reconnection.
If this is not explicitly specified, 10000 is assumed.
queueSize
- the maximum queue sizeConfigException
- if the specified queueSize
is invalidint getMaximumQueueSize()
FanOutLinkConfig addLink(String name, String selector) throws ConfigException
Any topics that are selected by the specified selector will be replicated at the secondary server assuming they are of types that can be replicated.
At least one such link should be specified for each connection but any number can be configured in order to separate segments of the topic tree.
Care must be taken to ensure that topic tree segments do not overlap with other links or with other connections. If the same topics are selected from different primary servers, errors could occur when creating replicated topics.
name
- the name of the linkselector
- the selector associated with the linkConfigException
- if the name or selector are not supplied or there
is already a link defined with the same name or selectorFanOutLinkConfig getLink(String name)
name
- the name of the link.List<FanOutLinkConfig> getLinks()
Copyright © 2021 Push Technology Ltd. All Rights Reserved.