Class FailoverTransport

java.lang.Object
org.apache.activemq.transport.failover.FailoverTransport
All Implemented Interfaces:
Service, CompositeTransport, Transport

public class FailoverTransport extends Object implements CompositeTransport
A Transport that is made reliable by being able to fail over to another transport when a transport failure is detected.
  • Constructor Details

    • FailoverTransport

      public FailoverTransport()
  • Method Details

    • disposeTransport

      public final void disposeTransport(Transport transport)
    • handleTransportFailure

      public final void handleTransportFailure(IOException e) throws InterruptedException
      Throws:
      InterruptedException
    • handleTransportFailure

      public final void handleTransportFailure(Transport failed, IOException e) throws InterruptedException
      Throws:
      InterruptedException
    • handleConnectionControl

      public final void handleConnectionControl(ConnectionControl control)
    • start

      public void start() throws Exception
      Specified by:
      start in interface Service
      Throws:
      Exception
    • stop

      public void stop() throws Exception
      Specified by:
      stop in interface Service
      Throws:
      Exception
    • getInitialReconnectDelay

      public long getInitialReconnectDelay()
    • setInitialReconnectDelay

      public void setInitialReconnectDelay(long initialReconnectDelay)
    • getMaxReconnectDelay

      public long getMaxReconnectDelay()
    • setMaxReconnectDelay

      public void setMaxReconnectDelay(long maxReconnectDelay)
    • getReconnectDelay

      public long getReconnectDelay()
    • setReconnectDelay

      public void setReconnectDelay(long reconnectDelay)
    • getReconnectDelayExponent

      public double getReconnectDelayExponent()
    • setReconnectDelayExponent

      public void setReconnectDelayExponent(double reconnectDelayExponent)
    • getConnectedTransport

      public Transport getConnectedTransport()
    • getConnectedTransportURI

      public URI getConnectedTransportURI()
    • getMaxReconnectAttempts

      public int getMaxReconnectAttempts()
    • setMaxReconnectAttempts

      public void setMaxReconnectAttempts(int maxReconnectAttempts)
    • getStartupMaxReconnectAttempts

      public int getStartupMaxReconnectAttempts()
    • setStartupMaxReconnectAttempts

      public void setStartupMaxReconnectAttempts(int startupMaxReconnectAttempts)
    • getTimeout

      public long getTimeout()
    • setTimeout

      public void setTimeout(long timeout)
    • isRandomize

      public boolean isRandomize()
      Returns:
      Returns the randomize.
    • setRandomize

      public void setRandomize(boolean randomize)
      Parameters:
      randomize - The randomize to set.
    • isBackup

      public boolean isBackup()
    • setBackup

      public void setBackup(boolean backup)
    • getBackupPoolSize

      public int getBackupPoolSize()
    • setBackupPoolSize

      public void setBackupPoolSize(int backupPoolSize)
    • getCurrentBackups

      public int getCurrentBackups()
    • isTrackMessages

      public boolean isTrackMessages()
    • setTrackMessages

      public void setTrackMessages(boolean trackMessages)
    • isTrackTransactionProducers

      public boolean isTrackTransactionProducers()
    • setTrackTransactionProducers

      public void setTrackTransactionProducers(boolean trackTransactionProducers)
    • getMaxCacheSize

      public int getMaxCacheSize()
    • setMaxCacheSize

      public void setMaxCacheSize(int maxCacheSize)
    • isPriorityBackup

      public boolean isPriorityBackup()
    • setPriorityBackup

      public void setPriorityBackup(boolean priorityBackup)
    • setPriorityURIs

      public void setPriorityURIs(String priorityURIs)
    • oneway

      public void oneway(Object o) throws IOException
      Description copied from interface: Transport
      A one way asynchronous send
      Specified by:
      oneway in interface Transport
      Throws:
      IOException
    • asyncRequest

      public FutureResponse asyncRequest(Object command, ResponseCallback responseCallback) throws IOException
      Description copied from interface: Transport
      An asynchronous request response where the Receipt will be returned in the future. If responseCallback is not null, then it will be called when the response has been completed.
      Specified by:
      asyncRequest in interface Transport
      responseCallback - TODO
      Returns:
      the FutureResponse
      Throws:
      IOException
    • request

      public Object request(Object command) throws IOException
      Description copied from interface: Transport
      A synchronous request response
      Specified by:
      request in interface Transport
      Returns:
      the response
      Throws:
      IOException
    • request

      public Object request(Object command, int timeout) throws IOException
      Description copied from interface: Transport
      A synchronous request response
      Specified by:
      request in interface Transport
      Returns:
      the repsonse or null if timeout
      Throws:
      IOException
    • add

      public void add(boolean rebalance, URI[] u)
      Specified by:
      add in interface CompositeTransport
    • remove

      public void remove(boolean rebalance, URI[] u)
      Specified by:
      remove in interface CompositeTransport
    • add

      public void add(boolean rebalance, String u)
    • reconnect

      public void reconnect(boolean rebalance)
    • getTransportListener

      public TransportListener getTransportListener()
      Description copied from interface: Transport
      Returns the current transport listener
      Specified by:
      getTransportListener in interface Transport
      Returns:
    • setTransportListener

      public void setTransportListener(TransportListener commandListener)
      Description copied from interface: Transport
      Registers an inbound command listener
      Specified by:
      setTransportListener in interface Transport
    • narrow

      public <T> T narrow(Class<T> target)
      Specified by:
      narrow in interface Transport
      Returns:
      the target
    • restoreTransport

      protected void restoreTransport(Transport t) throws Exception, IOException
      Throws:
      Exception
      IOException
    • isUseExponentialBackOff

      public boolean isUseExponentialBackOff()
    • setUseExponentialBackOff

      public void setUseExponentialBackOff(boolean useExponentialBackOff)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getRemoteAddress

      public String getRemoteAddress()
      Specified by:
      getRemoteAddress in interface Transport
      Returns:
      the remote address for this connection
    • isFaultTolerant

      public boolean isFaultTolerant()
      Description copied from interface: Transport
      Indicates if the transport can handle faults
      Specified by:
      isFaultTolerant in interface Transport
      Returns:
      true if fault tolerant
    • isPriority

      protected boolean isPriority(URI uri)
    • isDisposed

      public boolean isDisposed()
      Specified by:
      isDisposed in interface Transport
      Returns:
      true if the transport is disposed
    • isConnected

      public boolean isConnected()
      Specified by:
      isConnected in interface Transport
      Returns:
      true if the transport is connected
    • reconnect

      public void reconnect(URI uri) throws IOException
      Description copied from interface: Transport
      reconnect to another location
      Specified by:
      reconnect in interface Transport
      Throws:
      IOException - on failure of if not supported
    • isReconnectSupported

      public boolean isReconnectSupported()
      Specified by:
      isReconnectSupported in interface Transport
      Returns:
      true if reconnect is supported
    • setReconnectSupported

      public void setReconnectSupported(boolean value)
    • isUpdateURIsSupported

      public boolean isUpdateURIsSupported()
      Specified by:
      isUpdateURIsSupported in interface Transport
      Returns:
      true if updating uris is supported
    • setUpdateURIsSupported

      public void setUpdateURIsSupported(boolean value)
    • updateURIs

      public void updateURIs(boolean rebalance, URI[] updatedURIs) throws IOException
      Description copied from interface: Transport
      Provide a list of available alternative locations
      Specified by:
      updateURIs in interface Transport
      Throws:
      IOException
    • getUpdateURIsURL

      public String getUpdateURIsURL()
      Returns:
      the updateURIsURL
    • setUpdateURIsURL

      public void setUpdateURIsURL(String updateURIsURL)
      Parameters:
      updateURIsURL - the updateURIsURL to set
    • isRebalanceUpdateURIs

      public boolean isRebalanceUpdateURIs()
      Returns:
      the rebalanceUpdateURIs
    • setRebalanceUpdateURIs

      public void setRebalanceUpdateURIs(boolean rebalanceUpdateURIs)
      Parameters:
      rebalanceUpdateURIs - the rebalanceUpdateURIs to set
    • getReceiveCounter

      public int getReceiveCounter()
      Description copied from interface: Transport
      Returns a counter which gets incremented as data is read from the transport. It should only be used to determine if there is progress being made in reading the next command from the transport. The value may wrap into the negative numbers.
      Specified by:
      getReceiveCounter in interface Transport
      Returns:
      a counter which gets incremented as data is read from the transport.
    • getConnectFailures

      public int getConnectFailures()
    • connectionInterruptProcessingComplete

      public void connectionInterruptProcessingComplete(ConnectionId connectionId)
    • getStateTracker

      public ConnectionStateTracker getStateTracker()
    • isConnectedToPriority

      public boolean isConnectedToPriority()
    • setNestedExtraQueryOptions

      public void setNestedExtraQueryOptions(String nestedExtraQueryOptions)
    • getWarnAfterReconnectAttempts

      public int getWarnAfterReconnectAttempts()
    • setWarnAfterReconnectAttempts

      public 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. This can be useful when the client is running inside some container or service as it give an indication of some problem with the client connection that might not otherwise be visible. To disable the log messages this value should be set to a value @{code attempts <= 0}
      Parameters:
      warnAfterReconnectAttempts - The number of failed connection attempts that must happen before a warning is logged.
    • getPeerCertificates

      public X509Certificate[] getPeerCertificates()
      Specified by:
      getPeerCertificates in interface Transport
      Returns:
      the Certificates provided by the peer, or null if not a secure channel.
    • setPeerCertificates

      public void setPeerCertificates(X509Certificate[] certificates)
      Description copied from interface: Transport
      Sets the certificates provided by the connected peer.
      Specified by:
      setPeerCertificates in interface Transport
      Parameters:
      certificates - the Certificates provided by the peer.
    • getWireFormat

      public WireFormat getWireFormat()
      Description copied from interface: Transport
      Retrieves the WireFormat instance associated with this Transport instance.
      Specified by:
      getWireFormat in interface Transport
      Returns:
      the WireFormat in use.