Class AutoTcpTransportServer
- java.lang.Object
-
- org.apache.activemq.util.ServiceSupport
-
- org.apache.activemq.transport.TransportServerSupport
-
- org.apache.activemq.transport.TransportServerThreadSupport
-
- org.apache.activemq.transport.tcp.TcpTransportServer
-
- org.apache.activemq.transport.auto.AutoTcpTransportServer
-
- All Implemented Interfaces:
Runnable,org.apache.activemq.Service,org.apache.activemq.transport.TransportServer,org.apache.activemq.util.ServiceListener
- Direct Known Subclasses:
AutoNIOSSLTransportServer,AutoSslTransportServer
public class AutoTcpTransportServer extends org.apache.activemq.transport.tcp.TcpTransportServerA TCP based implementation ofTransportServer
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classAutoTcpTransportServer.ProtocolInfo
-
Field Summary
Fields Modifier and Type Field Description protected Map<String,Object>autoTransportOptionsprotected BrokerServicebrokerServiceprotected Set<String>enabledProtocolsprotected intmaxConnectionThreadPoolSizeprotected ThreadPoolExecutornewConnectionExecutorprotected ThreadPoolExecutorprotocolDetectionExecutorprotected intprotocolDetectionTimeOutprotected Map<String,ProtocolVerifier>protocolVerifiersprotected Map<String,Map<String,Object>>wireFormatOptions-
Fields inherited from class org.apache.activemq.transport.tcp.TcpTransportServer
allowLinkStealing, backlog, connectionTimeout, currentTransportCount, dynamicManagement, jmxPort, logWriterName, maximumConnections, maximumConnectionsExceededCount, maxInactivityDuration, maxInactivityDurationInitalDelay, minmumWireFormatVersion, selector, serverSocket, serverSocketFactory, socketBufferSize, socketHandlerThread, socketQueue, soTimeout, startLogging, trace, transportFactory, useQueueForAccept, verifyHostName, wireFormatFactory
-
-
Constructor Summary
Constructors Constructor Description AutoTcpTransportServer(org.apache.activemq.transport.tcp.TcpTransportFactory transportFactory, URI location, ServerSocketFactory serverSocketFactory, BrokerService brokerService, Set<String> enabledProtocols)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Stringappend(String currentScheme, String scheme)protected org.apache.activemq.transport.tcp.TcpTransportServer.TransportInfoconfigureTransport(org.apache.activemq.transport.tcp.TcpTransportServer server, Socket socket)protected org.apache.activemq.transport.tcp.TcpTransportcreateTransport(Socket socket, org.apache.activemq.wireformat.WireFormat format, org.apache.activemq.transport.tcp.TcpTransportFactory detectedTransportFactory, org.apache.activemq.transport.tcp.TcpTransport.InitBuffer initBuffer)protected AutoTcpTransportServer.ProtocolInfodetectProtocol(byte[] buffer)protected voiddoStop(org.apache.activemq.util.ServiceStopper stopper)org.apache.activemq.transport.TransportFactoryfindTransportFactory(String scheme, Map<String,?> options)org.apache.activemq.wireformat.WireFormatFactoryfindWireFormatFactory(String scheme, Map<String,Map<String,Object>> options)intgetMaxConnectionThreadPoolSize()protected voidhandleSocket(Socket socket)protected voidinitOpenWireProtocolVerifier()protected voidinitProtocolVerifiers()protected booleanisAllProtocols()voidsetAutoTransportOptions(Map<String,Object> autoTransportOptions)voidsetEnabledProtocols(Set<String> enabledProtocols)voidsetMaxConnectionThreadPoolSize(int maxConnectionThreadPoolSize)Set the number of threads to be used for processing connections.voidsetProtocolDetectionTimeOut(int protocolDetectionTimeOut)voidsetWireFormatFactory(org.apache.activemq.wireformat.WireFormatFactory factory)voidsetWireFormatOptions(Map<String,Map<String,Object>> wireFormatOptions)protected voidwaitForProtocolDetectionFinish(Future<?> future, AtomicInteger readBytes)-
Methods inherited from class org.apache.activemq.transport.tcp.TcpTransportServer
bind, createTransport, doHandleSocket, doStart, getBacklog, getConnectionTimeout, getCurrentTransportCount, getJmxPort, getLogWriterName, getMaxConnectionExceededCount, getMaximumConnections, getMaxInactivityDuration, getMaxInactivityDurationInitalDelay, getMinmumWireFormatVersion, getSocketAddress, getSocketBufferSize, getSoTimeout, getWireFormatFactory, isAllowLinkStealing, isDynamicManagement, isSslServer, isStartLogging, isTrace, isUseQueueForAccept, resetStatistics, resolveHostName, run, setAllowLinkStealing, setBacklog, setBrokerInfo, setConnectionTimeout, setDynamicManagement, setJmxPort, setLogWriterName, setMaximumConnections, setMaxInactivityDuration, setMaxInactivityDurationInitalDelay, setMinmumWireFormatVersion, setSocketBufferSize, setSoTimeout, setStartLogging, setTrace, setUseQueueForAccept, started, stopped, toString
-
Methods inherited from class org.apache.activemq.transport.TransportServerThreadSupport
getStackSize, isDaemon, isJoinOnStop, setDaemon, setJoinOnStop, setStackSize
-
Methods inherited from class org.apache.activemq.transport.TransportServerSupport
getAcceptListener, getBindLocation, getConnectURI, onAcceptError, setAcceptListener, setBindLocation, setConnectURI, setTransportOption
-
Methods inherited from class org.apache.activemq.util.ServiceSupport
addServiceListener, dispose, isStarted, isStopped, isStopping, postStop, preStart, removeServiceListener, start, stop
-
-
-
-
Field Detail
-
protocolVerifiers
protected final Map<String,ProtocolVerifier> protocolVerifiers
-
brokerService
protected BrokerService brokerService
-
newConnectionExecutor
protected final ThreadPoolExecutor newConnectionExecutor
-
protocolDetectionExecutor
protected final ThreadPoolExecutor protocolDetectionExecutor
-
maxConnectionThreadPoolSize
protected int maxConnectionThreadPoolSize
-
protocolDetectionTimeOut
protected int protocolDetectionTimeOut
-
-
Constructor Detail
-
AutoTcpTransportServer
public AutoTcpTransportServer(org.apache.activemq.transport.tcp.TcpTransportFactory transportFactory, URI location, ServerSocketFactory serverSocketFactory, BrokerService brokerService, Set<String> enabledProtocols) throws IOException, URISyntaxException- Parameters:
transportFactory-location-serverSocketFactory-- Throws:
IOExceptionURISyntaxException
-
-
Method Detail
-
findWireFormatFactory
public org.apache.activemq.wireformat.WireFormatFactory findWireFormatFactory(String scheme, Map<String,Map<String,Object>> options) throws IOException
- Throws:
IOException
-
findTransportFactory
public org.apache.activemq.transport.TransportFactory findTransportFactory(String scheme, Map<String,?> options) throws IOException
- Throws:
IOException
-
getMaxConnectionThreadPoolSize
public int getMaxConnectionThreadPoolSize()
-
setMaxConnectionThreadPoolSize
public void setMaxConnectionThreadPoolSize(int maxConnectionThreadPoolSize)
Set the number of threads to be used for processing connections. Defaults to Integer.MAX_SIZE. Set this value to be lower to reduce the number of simultaneous connection attempts. If not set then the maximum number of threads will generally be controlled by the transport maxConnections setting:TcpTransportServer.setMaximumConnections(int).Note that this setter controls two thread pools because connection attempts require 1 thread to start processing the connection and another thread to read from the socket and to detect the protocol. Two threads are needed because some transports block on socket read so the first thread needs to be able to abort the second thread on timeout. Therefore this setting will set each thread pool to the size passed in essentially giving 2 times as many potential threads as the value set.
Both thread pools will close idle threads after a period of time essentially allowing the thread pools to grow and shrink dynamically based on load.
- Parameters:
maxConnectionThreadPoolSize-
-
setProtocolDetectionTimeOut
public void setProtocolDetectionTimeOut(int protocolDetectionTimeOut)
-
setWireFormatFactory
public void setWireFormatFactory(org.apache.activemq.wireformat.WireFormatFactory factory)
- Overrides:
setWireFormatFactoryin classorg.apache.activemq.transport.tcp.TcpTransportServer
-
initProtocolVerifiers
protected void initProtocolVerifiers()
-
initOpenWireProtocolVerifier
protected void initOpenWireProtocolVerifier()
-
isAllProtocols
protected boolean isAllProtocols()
-
handleSocket
protected void handleSocket(Socket socket)
- Overrides:
handleSocketin classorg.apache.activemq.transport.tcp.TcpTransportServer
-
configureTransport
protected org.apache.activemq.transport.tcp.TcpTransportServer.TransportInfo configureTransport(org.apache.activemq.transport.tcp.TcpTransportServer server, Socket socket) throws Exception- Overrides:
configureTransportin classorg.apache.activemq.transport.tcp.TcpTransportServer- Throws:
Exception
-
waitForProtocolDetectionFinish
protected void waitForProtocolDetectionFinish(Future<?> future, AtomicInteger readBytes) throws Exception
- Throws:
Exception
-
createTransport
protected org.apache.activemq.transport.tcp.TcpTransport createTransport(Socket socket, org.apache.activemq.wireformat.WireFormat format, org.apache.activemq.transport.tcp.TcpTransportFactory detectedTransportFactory, org.apache.activemq.transport.tcp.TcpTransport.InitBuffer initBuffer) throws IOException
- Parameters:
socket-format-detectedTransportFactory-- Returns:
- Throws:
IOException
-
setWireFormatOptions
public void setWireFormatOptions(Map<String,Map<String,Object>> wireFormatOptions)
-
setAutoTransportOptions
public void setAutoTransportOptions(Map<String,Object> autoTransportOptions)
-
doStop
protected void doStop(org.apache.activemq.util.ServiceStopper stopper) throws Exception- Overrides:
doStopin classorg.apache.activemq.transport.tcp.TcpTransportServer- Throws:
Exception
-
detectProtocol
protected AutoTcpTransportServer.ProtocolInfo detectProtocol(byte[] buffer) throws IOException
- Throws:
IOException
-
-