Package org.apache.activemq.broker
Class TransportConnection
java.lang.Object
org.apache.activemq.broker.TransportConnection
- All Implemented Interfaces:
Connection,org.apache.activemq.Service,org.apache.activemq.state.CommandVisitor,org.apache.activemq.thread.Task
- Direct Known Subclasses:
ManagedTransportConnection
public class TransportConnection
extends Object
implements Connection, org.apache.activemq.thread.Task, org.apache.activemq.state.CommandVisitor
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final Brokerprotected final Map<org.apache.activemq.command.ConnectionId,org.apache.activemq.state.ConnectionState> protected org.apache.activemq.command.BrokerInfoprotected final BrokerServiceprotected final TransportConnectorprotected final List<org.apache.activemq.command.Command>protected AtomicBooleanprotected org.apache.activemq.thread.TaskRunnerprotected final AtomicReference<Throwable> -
Constructor Summary
ConstructorsConstructorDescriptionTransportConnection(TransportConnector connector, org.apache.activemq.transport.Transport transport, Broker broker, org.apache.activemq.thread.TaskRunnerFactory taskRunnerFactory, org.apache.activemq.thread.TaskRunnerFactory stopTaskRunnerFactory) -
Method Summary
Modifier and TypeMethodDescriptionvoiddelayedStop(int waitTime, String reason, Throwable cause) protected voiddispatch(org.apache.activemq.command.Command command) voiddispatchAsync(org.apache.activemq.command.Command message) Sends a message to the client.voiddispatchSync(org.apache.activemq.command.Command message) Sends a message to the client.voiddoMark()Mark the Connection, so we can deem if it's collectable on the next sweepprotected voiddoStop()intReturns the number of active transactions established on this Connection.Returns the time in ms since epoch when connection was established.intReturns the number of messages to be dispatched to this connectionprotected StringReturns the number of active transactions established on this Connection.getProducerBrokerExchangeIfExists(org.apache.activemq.command.ProducerInfo producerInfo) intorg.apache.activemq.command.WireFormatInfoReturns the statistics for this connectionprotected CountDownLatchorg.apache.activemq.transport.TransportbooleanisActive()booleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanreturn true if a network connectionbooleanbooleanisSlow()booleanbooleanbooleaniterate()protected List<TransportConnectionState>protected TransportConnectionStatelookupConnectionState(String connectionId) lookupConnectionState(org.apache.activemq.command.ConnectionId connectionId) protected TransportConnectionStatelookupConnectionState(org.apache.activemq.command.ConsumerId id) protected TransportConnectionStatelookupConnectionState(org.apache.activemq.command.ProducerId id) protected TransportConnectionStatelookupConnectionState(org.apache.activemq.command.SessionId id) org.apache.activemq.command.ResponseprocessAddConnection(org.apache.activemq.command.ConnectionInfo info) org.apache.activemq.command.ResponseprocessAddConsumer(org.apache.activemq.command.ConsumerInfo info) org.apache.activemq.command.ResponseprocessAddDestination(org.apache.activemq.command.DestinationInfo info) org.apache.activemq.command.ResponseprocessAddProducer(org.apache.activemq.command.ProducerInfo info) org.apache.activemq.command.ResponseprocessAddSession(org.apache.activemq.command.SessionInfo info) org.apache.activemq.command.ResponseprocessBeginTransaction(org.apache.activemq.command.TransactionInfo info) org.apache.activemq.command.ResponseprocessBrokerInfo(org.apache.activemq.command.BrokerInfo info) org.apache.activemq.command.ResponseprocessBrokerSubscriptionInfo(org.apache.activemq.command.BrokerSubscriptionInfo info) org.apache.activemq.command.ResponseprocessCommitTransactionOnePhase(org.apache.activemq.command.TransactionInfo info) org.apache.activemq.command.ResponseprocessCommitTransactionTwoPhase(org.apache.activemq.command.TransactionInfo info) org.apache.activemq.command.ResponseprocessConnectionControl(org.apache.activemq.command.ConnectionControl control) org.apache.activemq.command.ResponseprocessConnectionError(org.apache.activemq.command.ConnectionError error) org.apache.activemq.command.ResponseprocessConsumerControl(org.apache.activemq.command.ConsumerControl control) org.apache.activemq.command.ResponseprocessControlCommand(org.apache.activemq.command.ControlCommand command) protected voidprocessDispatch(org.apache.activemq.command.Command command) org.apache.activemq.command.ResponseprocessEndTransaction(org.apache.activemq.command.TransactionInfo info) org.apache.activemq.command.ResponseprocessFlush(org.apache.activemq.command.FlushCommand command) org.apache.activemq.command.ResponseprocessForgetTransaction(org.apache.activemq.command.TransactionInfo info) org.apache.activemq.command.ResponseprocessKeepAlive(org.apache.activemq.command.KeepAliveInfo info) org.apache.activemq.command.ResponseprocessMessage(org.apache.activemq.command.Message messageSend) org.apache.activemq.command.ResponseprocessMessageAck(org.apache.activemq.command.MessageAck ack) org.apache.activemq.command.ResponseprocessMessageDispatch(org.apache.activemq.command.MessageDispatch dispatch) org.apache.activemq.command.ResponseprocessMessageDispatchNotification(org.apache.activemq.command.MessageDispatchNotification notification) org.apache.activemq.command.ResponseprocessMessagePull(org.apache.activemq.command.MessagePull pull) org.apache.activemq.command.ResponseprocessPrepareTransaction(org.apache.activemq.command.TransactionInfo info) org.apache.activemq.command.ResponseprocessProducerAck(org.apache.activemq.command.ProducerAck ack) org.apache.activemq.command.ResponseprocessRecoverTransactions(org.apache.activemq.command.TransactionInfo info) org.apache.activemq.command.ResponseprocessRemoveConnection(org.apache.activemq.command.ConnectionId id, long lastDeliveredSequenceId) org.apache.activemq.command.ResponseprocessRemoveConsumer(org.apache.activemq.command.ConsumerId id, long lastDeliveredSequenceId) org.apache.activemq.command.ResponseprocessRemoveDestination(org.apache.activemq.command.DestinationInfo info) org.apache.activemq.command.ResponseprocessRemoveProducer(org.apache.activemq.command.ProducerId id) org.apache.activemq.command.ResponseprocessRemoveSession(org.apache.activemq.command.SessionId id, long lastDeliveredSequenceId) org.apache.activemq.command.ResponseprocessRemoveSubscription(org.apache.activemq.command.RemoveSubscriptionInfo info) org.apache.activemq.command.ResponseprocessRollbackTransaction(org.apache.activemq.command.TransactionInfo info) org.apache.activemq.command.ResponseprocessShutdown(org.apache.activemq.command.ShutdownInfo info) org.apache.activemq.command.ResponseprocessWireFormat(org.apache.activemq.command.WireFormatInfo info) protected TransportConnectionStateregisterConnectionState(org.apache.activemq.command.ConnectionId connectionId, TransportConnectionState state) org.apache.activemq.command.Responseservice(org.apache.activemq.command.Command command) Services a client command and submits it to the broker.voidCloses a clients connection due to a detected error.voidCalls the serviceException method in an async thread.voidvoidsetActive(boolean active) voidsetBlocked(boolean blocked) voidsetBlockedCandidate(boolean blockedCandidate) voidsetConnected(boolean connected) protected voidsetDuplexNetworkConnectorId(String duplexNetworkConnectorId) voidsetMarkedCandidate(boolean markedCandidate) voidsetMessageAuthorizationPolicy(MessageAuthorizationPolicy messageAuthorizationPolicy) voidsetSlow(boolean slow) voidstart()voidstop()voidvoidtoString()protected TransportConnectionStateunregisterConnectionState(org.apache.activemq.command.ConnectionId connectionId) voidupdateClient(org.apache.activemq.command.ConnectionControl control)
-
Field Details
-
broker
-
brokerService
-
connector
-
brokerConnectionStates
protected final Map<org.apache.activemq.command.ConnectionId,org.apache.activemq.state.ConnectionState> brokerConnectionStates -
brokerInfo
protected org.apache.activemq.command.BrokerInfo brokerInfo -
dispatchQueue
-
taskRunner
protected org.apache.activemq.thread.TaskRunner taskRunner -
transportException
-
dispatchStopped
-
-
Constructor Details
-
TransportConnection
public TransportConnection(TransportConnector connector, org.apache.activemq.transport.Transport transport, Broker broker, org.apache.activemq.thread.TaskRunnerFactory taskRunnerFactory, org.apache.activemq.thread.TaskRunnerFactory stopTaskRunnerFactory) - Parameters:
taskRunnerFactory- - can be null if you want direct dispatch to the transport else commands are sent async.stopTaskRunnerFactory- - can not be null, used for stopping this connection.
-
-
Method Details
-
getDispatchQueueSize
public int getDispatchQueueSize()Returns the number of messages to be dispatched to this connection- Specified by:
getDispatchQueueSizein interfaceConnection- Returns:
- size of dispatch queue
-
serviceTransportException
-
serviceExceptionAsync
Calls the serviceException method in an async thread. Since handling a service exception closes a socket, we should not tie up broker threads since client sockets may hang or cause deadlocks.- Specified by:
serviceExceptionAsyncin interfaceConnection
-
serviceException
Closes a clients connection due to a detected error. Errors are ignored if: the client is closing or broker is closing. Otherwise, the connection error transmitted to the client before stopping it's transport.- Specified by:
serviceExceptionin interfaceConnection
-
service
public org.apache.activemq.command.Response service(org.apache.activemq.command.Command command) Description copied from interface:ConnectionServices a client command and submits it to the broker.- Specified by:
servicein interfaceConnection- Returns:
- Response
-
processKeepAlive
public org.apache.activemq.command.Response processKeepAlive(org.apache.activemq.command.KeepAliveInfo info) throws Exception - Specified by:
processKeepAlivein interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processRemoveSubscription
public org.apache.activemq.command.Response processRemoveSubscription(org.apache.activemq.command.RemoveSubscriptionInfo info) throws Exception - Specified by:
processRemoveSubscriptionin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processWireFormat
public org.apache.activemq.command.Response processWireFormat(org.apache.activemq.command.WireFormatInfo info) throws Exception - Specified by:
processWireFormatin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processShutdown
public org.apache.activemq.command.Response processShutdown(org.apache.activemq.command.ShutdownInfo info) throws Exception - Specified by:
processShutdownin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processFlush
public org.apache.activemq.command.Response processFlush(org.apache.activemq.command.FlushCommand command) throws Exception - Specified by:
processFlushin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processBeginTransaction
public org.apache.activemq.command.Response processBeginTransaction(org.apache.activemq.command.TransactionInfo info) throws Exception - Specified by:
processBeginTransactionin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
getActiveTransactionCount
public int getActiveTransactionCount()Description copied from interface:ConnectionReturns the number of active transactions established on this Connection.- Specified by:
getActiveTransactionCountin interfaceConnection- Returns:
- the number of active transactions established on this Connection..
-
getOldestActiveTransactionDuration
Description copied from interface:ConnectionReturns the number of active transactions established on this Connection.- Specified by:
getOldestActiveTransactionDurationin interfaceConnection- Returns:
- the number of active transactions established on this Connection..
-
processEndTransaction
public org.apache.activemq.command.Response processEndTransaction(org.apache.activemq.command.TransactionInfo info) throws Exception - Specified by:
processEndTransactionin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processPrepareTransaction
public org.apache.activemq.command.Response processPrepareTransaction(org.apache.activemq.command.TransactionInfo info) throws Exception - Specified by:
processPrepareTransactionin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processCommitTransactionOnePhase
public org.apache.activemq.command.Response processCommitTransactionOnePhase(org.apache.activemq.command.TransactionInfo info) throws Exception - Specified by:
processCommitTransactionOnePhasein interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processCommitTransactionTwoPhase
public org.apache.activemq.command.Response processCommitTransactionTwoPhase(org.apache.activemq.command.TransactionInfo info) throws Exception - Specified by:
processCommitTransactionTwoPhasein interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processRollbackTransaction
public org.apache.activemq.command.Response processRollbackTransaction(org.apache.activemq.command.TransactionInfo info) throws Exception - Specified by:
processRollbackTransactionin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processForgetTransaction
public org.apache.activemq.command.Response processForgetTransaction(org.apache.activemq.command.TransactionInfo info) throws Exception - Specified by:
processForgetTransactionin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processRecoverTransactions
public org.apache.activemq.command.Response processRecoverTransactions(org.apache.activemq.command.TransactionInfo info) throws Exception - Specified by:
processRecoverTransactionsin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processMessage
public org.apache.activemq.command.Response processMessage(org.apache.activemq.command.Message messageSend) throws Exception - Specified by:
processMessagein interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processMessageAck
public org.apache.activemq.command.Response processMessageAck(org.apache.activemq.command.MessageAck ack) throws Exception - Specified by:
processMessageAckin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processMessagePull
public org.apache.activemq.command.Response processMessagePull(org.apache.activemq.command.MessagePull pull) throws Exception - Specified by:
processMessagePullin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processMessageDispatchNotification
public org.apache.activemq.command.Response processMessageDispatchNotification(org.apache.activemq.command.MessageDispatchNotification notification) throws Exception - Specified by:
processMessageDispatchNotificationin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processAddDestination
public org.apache.activemq.command.Response processAddDestination(org.apache.activemq.command.DestinationInfo info) throws Exception - Specified by:
processAddDestinationin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processRemoveDestination
public org.apache.activemq.command.Response processRemoveDestination(org.apache.activemq.command.DestinationInfo info) throws Exception - Specified by:
processRemoveDestinationin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processAddProducer
public org.apache.activemq.command.Response processAddProducer(org.apache.activemq.command.ProducerInfo info) throws Exception - Specified by:
processAddProducerin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processRemoveProducer
public org.apache.activemq.command.Response processRemoveProducer(org.apache.activemq.command.ProducerId id) throws Exception - Specified by:
processRemoveProducerin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processAddConsumer
public org.apache.activemq.command.Response processAddConsumer(org.apache.activemq.command.ConsumerInfo info) throws Exception - Specified by:
processAddConsumerin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processRemoveConsumer
public org.apache.activemq.command.Response processRemoveConsumer(org.apache.activemq.command.ConsumerId id, long lastDeliveredSequenceId) throws Exception - Specified by:
processRemoveConsumerin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processAddSession
public org.apache.activemq.command.Response processAddSession(org.apache.activemq.command.SessionInfo info) throws Exception - Specified by:
processAddSessionin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processRemoveSession
public org.apache.activemq.command.Response processRemoveSession(org.apache.activemq.command.SessionId id, long lastDeliveredSequenceId) throws Exception - Specified by:
processRemoveSessionin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processAddConnection
public org.apache.activemq.command.Response processAddConnection(org.apache.activemq.command.ConnectionInfo info) throws Exception - Specified by:
processAddConnectionin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processRemoveConnection
public org.apache.activemq.command.Response processRemoveConnection(org.apache.activemq.command.ConnectionId id, long lastDeliveredSequenceId) throws InterruptedException - Specified by:
processRemoveConnectionin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
InterruptedException
-
processProducerAck
public org.apache.activemq.command.Response processProducerAck(org.apache.activemq.command.ProducerAck ack) throws Exception - Specified by:
processProducerAckin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
getConnector
- Specified by:
getConnectorin interfaceConnection- Returns:
- the connector that created this connection.
-
dispatchSync
public void dispatchSync(org.apache.activemq.command.Command message) Description copied from interface:ConnectionSends a message to the client.- Specified by:
dispatchSyncin interfaceConnection- Parameters:
message- the message to send to the client.
-
dispatchAsync
public void dispatchAsync(org.apache.activemq.command.Command message) Description copied from interface:ConnectionSends a message to the client.- Specified by:
dispatchAsyncin interfaceConnection
-
processDispatch
- Throws:
IOException
-
iterate
public boolean iterate()- Specified by:
iteratein interfaceorg.apache.activemq.thread.Task
-
getStatistics
Returns the statistics for this connection- Specified by:
getStatisticsin interfaceConnection
-
getMessageAuthorizationPolicy
-
setMessageAuthorizationPolicy
-
isManageable
public boolean isManageable()- Specified by:
isManageablein interfaceConnection- Returns:
- true if the Connection will process control commands
-
start
- Specified by:
startin interfaceorg.apache.activemq.Service- Throws:
Exception
-
stop
- Specified by:
stopin interfaceorg.apache.activemq.Service- Throws:
Exception
-
delayedStop
-
stopAsync
-
stopAsync
public void stopAsync() -
toString
-
doStop
- Throws:
Exception
-
isBlockedCandidate
public boolean isBlockedCandidate()- Returns:
- Returns the blockedCandidate.
-
setBlockedCandidate
public void setBlockedCandidate(boolean blockedCandidate) - Parameters:
blockedCandidate- The blockedCandidate to set.
-
isMarkedCandidate
public boolean isMarkedCandidate()- Returns:
- Returns the markedCandidate.
-
setMarkedCandidate
public void setMarkedCandidate(boolean markedCandidate) - Parameters:
markedCandidate- The markedCandidate to set.
-
setSlow
public void setSlow(boolean slow) - Parameters:
slow- The slow to set.
-
isSlow
public boolean isSlow()- Specified by:
isSlowin interfaceConnection- Returns:
- true if the Connection is slow
-
isMarkedBlockedCandidate
public boolean isMarkedBlockedCandidate()- Returns:
- true if the Connection is potentially blocked
-
doMark
public void doMark()Mark the Connection, so we can deem if it's collectable on the next sweep -
isBlocked
public boolean isBlocked()- Specified by:
isBlockedin interfaceConnection- Returns:
- if after being marked, the Connection is still writing
-
isConnected
public boolean isConnected()- Specified by:
isConnectedin interfaceConnection- Returns:
- true if the Connection is connected
-
setBlocked
public void setBlocked(boolean blocked) - Parameters:
blocked- The blocked to set.
-
setConnected
public void setConnected(boolean connected) - Parameters:
connected- The connected to set.
-
isActive
public boolean isActive()- Specified by:
isActivein interfaceConnection- Returns:
- true if the Connection is active
-
setActive
public void setActive(boolean active) - Parameters:
active- The active to set.
-
isStarting
public boolean isStarting()- Returns:
- true if the Connection is starting
-
isNetworkConnection
public boolean isNetworkConnection()Description copied from interface:Connectionreturn true if a network connection- Specified by:
isNetworkConnectionin interfaceConnection- Returns:
- if this is a network connection
-
isFaultTolerantConnection
public boolean isFaultTolerantConnection()- Specified by:
isFaultTolerantConnectionin interfaceConnection- Returns:
- true if a fault tolerant connection
-
isPendingStop
public boolean isPendingStop()- Returns:
- true if the Connection needs to stop
-
processBrokerInfo
public org.apache.activemq.command.Response processBrokerInfo(org.apache.activemq.command.BrokerInfo info) - Specified by:
processBrokerInfoin interfaceorg.apache.activemq.state.CommandVisitor
-
dispatch
- Throws:
IOException
-
getRemoteAddress
- Specified by:
getRemoteAddressin interfaceConnection- Returns:
- the source address for this connection
-
getTransport
public org.apache.activemq.transport.Transport getTransport() -
getConnectionId
- Specified by:
getConnectionIdin interfaceConnection
-
updateClient
public void updateClient(org.apache.activemq.command.ConnectionControl control) - Specified by:
updateClientin interfaceConnection
-
getProducerBrokerExchangeIfExists
public ProducerBrokerExchange getProducerBrokerExchangeIfExists(org.apache.activemq.command.ProducerInfo producerInfo) -
getProtocolVersion
public int getProtocolVersion() -
processControlCommand
public org.apache.activemq.command.Response processControlCommand(org.apache.activemq.command.ControlCommand command) throws Exception - Specified by:
processControlCommandin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processMessageDispatch
public org.apache.activemq.command.Response processMessageDispatch(org.apache.activemq.command.MessageDispatch dispatch) throws Exception - Specified by:
processMessageDispatchin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processConnectionControl
public org.apache.activemq.command.Response processConnectionControl(org.apache.activemq.command.ConnectionControl control) throws Exception - Specified by:
processConnectionControlin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processConnectionError
public org.apache.activemq.command.Response processConnectionError(org.apache.activemq.command.ConnectionError error) throws Exception - Specified by:
processConnectionErrorin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
processConsumerControl
public org.apache.activemq.command.Response processConsumerControl(org.apache.activemq.command.ConsumerControl control) throws Exception - Specified by:
processConsumerControlin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
registerConnectionState
protected TransportConnectionState registerConnectionState(org.apache.activemq.command.ConnectionId connectionId, TransportConnectionState state) -
unregisterConnectionState
protected TransportConnectionState unregisterConnectionState(org.apache.activemq.command.ConnectionId connectionId) -
listConnectionStates
-
lookupConnectionState
-
lookupConnectionState
-
lookupConnectionState
-
lookupConnectionState
-
lookupConnectionState
public TransportConnectionState lookupConnectionState(org.apache.activemq.command.ConnectionId connectionId) -
setDuplexNetworkConnectorId
-
getDuplexNetworkConnectorId
-
isStopping
public boolean isStopping() -
getStopped
-
getRemoteWireFormatInfo
public org.apache.activemq.command.WireFormatInfo getRemoteWireFormatInfo() -
processBrokerSubscriptionInfo
public org.apache.activemq.command.Response processBrokerSubscriptionInfo(org.apache.activemq.command.BrokerSubscriptionInfo info) throws Exception - Specified by:
processBrokerSubscriptionInfoin interfaceorg.apache.activemq.state.CommandVisitor- Throws:
Exception
-
getConnectedTimestamp
Description copied from interface:ConnectionReturns the time in ms since epoch when connection was established.- Specified by:
getConnectedTimestampin interfaceConnection- Returns:
- time in ms since epoch when connection was established.
-