public class FailoverProvider extends DefaultProviderListener implements Provider
Modifier and Type | Class and Description |
---|---|
protected class |
FailoverProvider.CreateConnectionRequest
Captures the initial request to create a JmsConnectionInfo based resources and ensures
that if the connection is successfully established that the connection established event
is triggered once before moving on to sending only connection interrupted and restored
events.
|
protected class |
FailoverProvider.FailoverRequest
For all requests that are dispatched from the FailoverProvider to a connected
Provider instance an instance of FailoverRequest is used to handle errors that
occur during processing of that request and trigger a reconnect.
|
protected class |
FailoverProvider.FailoverRequestSweeper |
Modifier and Type | Field and Description |
---|---|
static long |
DEFAULT_INITIAL_RECONNECT_DELAY |
static int |
DEFAULT_MAX_RECONNECT_ATTEMPTS |
static long |
DEFAULT_MAX_RECONNECT_DELAY |
static double |
DEFAULT_RECONNECT_BACKOFF_MULTIPLIER |
static long |
DEFAULT_RECONNECT_DELAY |
static int |
DEFAULT_STARTUP_MAX_RECONNECT_ATTEMPTS |
static boolean |
DEFAULT_USE_RECONNECT_BACKOFF |
static int |
DEFAULT_WARN_AFTER_RECONNECT_ATTEMPTS |
static int |
UNLIMITED |
Constructor and Description |
---|
FailoverProvider(List<URI> uris) |
FailoverProvider(List<URI> uris,
Map<String,String> nestedOptions) |
FailoverProvider(Map<String,String> nestedOptions) |
Modifier and Type | Method and Description |
---|---|
void |
acknowledge(JmsInboundMessageDispatch envelope,
ProviderConstants.ACK_TYPE ackType,
AsyncResult request)
Called to acknowledge a JmsMessage has been delivered, consumed, re-delivered...etc.
|
void |
acknowledge(JmsSessionId sessionId,
ProviderConstants.ACK_TYPE ackType,
AsyncResult request)
Called to acknowledge all messages that have been delivered in a given session.
|
void |
add(URI uri) |
protected void |
checkClosed() |
void |
close()
Closes this Provider terminating all connections and canceling any pending
operations.
|
void |
commit(JmsTransactionInfo transactionInfo,
AsyncResult request)
Called to commit an open transaction.
|
void |
connect()
Performs the initial low level connection for this provider such as TCP or
SSL connection to a remote Broker.
|
void |
create(JmsResource resource,
AsyncResult request)
Create the Provider version of the given JmsResource.
|
void |
destroy(JmsResource resourceId,
AsyncResult request)
Instruct the Provider to dispose of a given JmsResource.
|
long |
getCloseTimeout() |
long |
getInitialReconnectDelay() |
int |
getMaxReconnectAttempts() |
long |
getMaxReconnectDelay() |
JmsMessageFactory |
getMessageFactory()
Gets the Provider specific Message factory for use in the JMS layer when a Session
is asked to create a Message type.
|
Map<String,String> |
getNestedOptions() |
ProviderListener |
getProviderListener()
Gets the currently set ProdiverListener instance.
|
double |
getReconnectBackOffMultiplier() |
long |
getReconnectDelay() |
URI |
getRemoteURI()
Returns the URI used to configure this Provider and specify the remote address of the
Broker it connects to.
|
protected long |
getRequestSweeperInterval() |
long |
getRequestTimeout() |
long |
getSendTimeout() |
int |
getStartupMaxReconnectAttempts() |
int |
getWarnAfterReconnectAttempts()
Gets the current setting controlling how many Connect / Reconnect attempts must occur
before a warn message is logged.
|
boolean |
isRandomize() |
boolean |
isUseReconnectBackOff() |
void |
onConnectionFailure(IOException ex)
Called to indicate that the underlying connection to the Broker has been lost and
the Provider will not perform any reconnect.
|
void |
onInboundMessage(JmsInboundMessageDispatch envelope)
Called when a new Message has arrived for a registered consumer.
|
void |
onProviderException(Exception ex)
Called to indicate that a some client operation caused or received an
error that is not considered fatal at the provider level.
|
void |
pull(JmsConsumerId consumerId,
long timeout,
AsyncResult request)
Request a remote peer send a Message to this client.
|
void |
recover(JmsSessionId sessionId,
AsyncResult request)
Called to recover all unacknowledged messages for a Session in client Ack mode.
|
void |
remove(URI uri) |
void |
rollback(JmsTransactionInfo transactionInfo,
AsyncResult request)
Called to roll back an open transaction.
|
void |
send(JmsOutboundMessageDispatch envelope,
AsyncResult request)
Sends the JmsMessage contained in the outbound dispatch envelope.
|
void |
setInitialReconnectDelay(long initialReconnectDelay) |
void |
setMaxReconnectAttempts(int maxReconnectAttempts) |
void |
setMaxReconnectDelay(long maxReconnectDelay) |
void |
setProviderListener(ProviderListener listener)
Sets the listener of events from this Provider instance.
|
void |
setRandomize(boolean value) |
void |
setReconnectBackOffMultiplier(double reconnectBackOffMultiplier) |
void |
setReconnectDelay(long reconnectDealy) |
void |
setStartupMaxReconnectAttempts(int startupMaxReconnectAttempts) |
void |
setUseReconnectBackOff(boolean useReconnectBackOff) |
void |
setWarnAfterReconnectAttempts(int warnAfterReconnectAttempts)
Sets the number of Connect / Reconnect attempts that must occur before a warn message
is logged indicating that the transport is not connected.
|
void |
start()
Starts the Provider.
|
void |
start(JmsResource resource,
AsyncResult request)
Starts the Provider version of the given JmsResource.
|
void |
stop(JmsResource resource,
AsyncResult request)
Stops (pauses) the Provider version of the given JmsResource, the resource would then
need to be started again via a call to
start()
For some JMS Resources it is necessary or advantageous to have a stopped state that
can be triggered to stop the resource generating new events or messages. |
String |
toString() |
void |
unsubscribe(String subscription,
AsyncResult request)
Remove a durable topic subscription by name.
|
onConnectionEstablished, onConnectionInterrupted, onConnectionRecovered, onConnectionRecovery, onConnectionRestored, onResourceRemotelyClosed
public static final int UNLIMITED
public static final int DEFAULT_MAX_RECONNECT_ATTEMPTS
public static final int DEFAULT_STARTUP_MAX_RECONNECT_ATTEMPTS
public static final long DEFAULT_INITIAL_RECONNECT_DELAY
public static final long DEFAULT_RECONNECT_DELAY
public static final long DEFAULT_MAX_RECONNECT_DELAY
public static final boolean DEFAULT_USE_RECONNECT_BACKOFF
public static final double DEFAULT_RECONNECT_BACKOFF_MULTIPLIER
public static final int DEFAULT_WARN_AFTER_RECONNECT_ATTEMPTS
public void connect() throws IOException
Provider
connect
in interface Provider
IOException
- if the remote resource can not be contacted.public void start() throws IOException, IllegalStateException
Provider
start
in interface Provider
IOException
- if an error occurs during start processing.IllegalStateException
- if the Provider is improperly configured.public void close()
Provider
public void create(JmsResource resource, AsyncResult request) throws IOException, javax.jms.JMSException, UnsupportedOperationException
Provider
create
in interface Provider
resource
- The JmsResouce instance that indicates what is being created.request
- The request object that should be signaled when this operation completes.IOException
- if an error occurs or the Provider is already closed.javax.jms.JMSException
- if an error occurs due to JMS violation such as bad credentials.UnsupportedOperationException
public void start(JmsResource resource, AsyncResult request) throws IOException, javax.jms.JMSException
Provider
start
in interface Provider
resource
- The JmsResouce instance that indicates what is being started.request
- The request object that should be signaled when this operation completes.IOException
- if an error occurs or the Provider is already closed.javax.jms.JMSException
- if an error occurs due to JMS violation such as already closed resource.public void stop(JmsResource resource, AsyncResult request) throws IOException, javax.jms.JMSException
Provider
start()
For some JMS Resources it is necessary or advantageous to have a stopped state that
can be triggered to stop the resource generating new events or messages.
An example of this would be a JMS Session which should not receive any incoming messages
for any consumers until the JMS layer is in a state to handle them. One such time would be
during a transaction rollback. A JMS Session should normally ensure that messages received
in a transaction are set to be redelivered prior to any new deliveries on a transaction
rollback.
The provider is required to implement this method and not throw any error other than
an IOException if a communication error occurs. The stop operation is not required to
have any effect on the provider resource but must not throw UnsupportedOperation etc.stop
in interface Provider
resource
- The JmsResouce instance that indicates what is being stopped.request
- The request object that should be signaled when this operation completes.IOException
- if an error occurs or the Provider is already closed.javax.jms.JMSException
- if an error occurs due to JMS violation such as already closed resource.public void destroy(JmsResource resourceId, AsyncResult request) throws IOException, javax.jms.JMSException, UnsupportedOperationException
Provider
destroy
in interface Provider
resourceId
- The JmsResouce that identifies a previously created JmsResource.request
- The request object that should be signaled when this operation completes.IOException
- if an error occurs or the Provider is already closed.javax.jms.JMSException
- if an error occurs due to JMS violation such as not authorized.UnsupportedOperationException
public void send(JmsOutboundMessageDispatch envelope, AsyncResult request) throws IOException, javax.jms.JMSException
Provider
send
in interface Provider
envelope
- the message envelope containing the JmsMessage to send.request
- The request object that should be signaled when this operation completes.IOException
- if an error occurs or the Provider is already closed.javax.jms.JMSException
- if an error that maps to JMS occurs such as not authorized.public void acknowledge(JmsSessionId sessionId, ProviderConstants.ACK_TYPE ackType, AsyncResult request) throws IOException, javax.jms.JMSException
Provider
acknowledge
in interface Provider
sessionId
- the ID of the Session whose delivered messages should be acknowledged.ackType
- The type of acknowledgement being done.request
- The request object that should be signaled when this operation completes.IOException
- if an error occurs or the Provider is already closed.javax.jms.JMSException
- if an error occurs due to JMS violation such as unmatched ack.public void acknowledge(JmsInboundMessageDispatch envelope, ProviderConstants.ACK_TYPE ackType, AsyncResult request) throws IOException, javax.jms.JMSException
Provider
acknowledge
in interface Provider
envelope
- The message dispatch envelope containing the Message delivery information.ackType
- The type of acknowledgement being done.request
- The request object that should be signaled when this operation completes.IOException
- if an error occurs or the Provider is already closed.javax.jms.JMSException
- if an error occurs due to JMS violation such as unmatched ack.public void commit(JmsTransactionInfo transactionInfo, AsyncResult request) throws IOException, javax.jms.JMSException, UnsupportedOperationException
Provider
commit
in interface Provider
transactionInfo
- the transaction info that describes the transaction being committed.request
- The request object that should be signaled when this operation completes.IOException
- if an error occurs or the Provider is already closed.javax.jms.JMSException
- if an error occurs due to JMS violation such not authorized.UnsupportedOperationException
public void rollback(JmsTransactionInfo transactionInfo, AsyncResult request) throws IOException, javax.jms.JMSException, UnsupportedOperationException
Provider
rollback
in interface Provider
transactionInfo
- the transaction info that describes the transaction being rolled back.request
- The request object that should be signaled when this operation completes.IOException
- if an error occurs or the Provider is already closed.javax.jms.JMSException
- if an error occurs due to JMS violation such not authorized.UnsupportedOperationException
public void recover(JmsSessionId sessionId, AsyncResult request) throws IOException, UnsupportedOperationException
Provider
recover
in interface Provider
sessionId
- the Id of the JmsSession that is recovering unacknowledged messages..request
- The request object that should be signaled when this operation completes.IOException
- if an error occurs or the Provider is already closed.UnsupportedOperationException
public void unsubscribe(String subscription, AsyncResult request) throws IOException, javax.jms.JMSException, UnsupportedOperationException
Provider
unsubscribe
in interface Provider
subscription
- the name of the durable subscription that is to be removed.request
- The request object that should be signaled when this operation completes.IOException
- if an error occurs or the Provider is already closed.javax.jms.JMSException
- if an error occurs due to JMS violation such not authorized.UnsupportedOperationException
public void pull(JmsConsumerId consumerId, long timeout, AsyncResult request) throws IOException, UnsupportedOperationException
Provider
pull
in interface Provider
consumerId
- the ID of the Consumer instance that is attempt to pull a message from the remote.timeout
- the amount of time to tell the remote peer to keep this pull request valid.request
- The request object that should be signaled when this operation completes.IOException
- if an error occurs or the Provider is already closed.UnsupportedOperationException
public JmsMessageFactory getMessageFactory()
Provider
getMessageFactory
in interface Provider
protected void checkClosed() throws IOException
IOException
public void onInboundMessage(JmsInboundMessageDispatch envelope)
ProviderListener
onInboundMessage
in interface ProviderListener
onInboundMessage
in class DefaultProviderListener
envelope
- The dispatch object containing the message and delivery information.public void onConnectionFailure(IOException ex)
ProviderListener
onConnectionFailure
in interface ProviderListener
onConnectionFailure
in class DefaultProviderListener
ex
- The exception that indicates the cause of this Provider failure.public void onProviderException(Exception ex)
ProviderListener
onProviderException
in interface ProviderListener
onProviderException
in class DefaultProviderListener
ex
- the exception object that is being reported to the listener.public void add(URI uri)
public void remove(URI uri)
public URI getRemoteURI()
Provider
getRemoteURI
in interface Provider
public void setProviderListener(ProviderListener listener)
Provider
setProviderListener
in interface Provider
listener
- The listener instance that will receive all event callbacks.public ProviderListener getProviderListener()
Provider
getProviderListener
in interface Provider
public boolean isRandomize()
public void setRandomize(boolean value)
public long getInitialReconnectDelay()
public void setInitialReconnectDelay(long initialReconnectDelay)
public long getReconnectDelay()
public void setReconnectDelay(long reconnectDealy)
public long getMaxReconnectDelay()
public void setMaxReconnectDelay(long maxReconnectDelay)
public int getMaxReconnectAttempts()
public void setMaxReconnectAttempts(int maxReconnectAttempts)
public int getStartupMaxReconnectAttempts()
public void setStartupMaxReconnectAttempts(int startupMaxReconnectAttempts)
public int getWarnAfterReconnectAttempts()
public void setWarnAfterReconnectAttempts(int warnAfterReconnectAttempts)
warnAfterReconnectAttempts
- The number of failed connection attempts that must happen before a warning is logged.public double getReconnectBackOffMultiplier()
public void setReconnectBackOffMultiplier(double reconnectBackOffMultiplier)
public boolean isUseReconnectBackOff()
public void setUseReconnectBackOff(boolean useReconnectBackOff)
public long getCloseTimeout()
public long getSendTimeout()
public long getRequestTimeout()
protected final long getRequestSweeperInterval()
Copyright © 2013–2016 The Apache Software Foundation. All rights reserved.