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.TcpTransportServer
A TCP based implementation ofTransportServer
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
AutoTcpTransportServer.ProtocolInfo
-
Field Summary
Fields Modifier and Type Field Description protected Map<String,Object>
autoTransportOptions
protected BrokerService
brokerService
protected Set<String>
enabledProtocols
protected int
maxConnectionThreadPoolSize
protected ThreadPoolExecutor
newConnectionExecutor
protected ThreadPoolExecutor
protocolDetectionExecutor
protected int
protocolDetectionTimeOut
protected Map<String,ProtocolVerifier>
protocolVerifiers
protected Map<String,Map<String,Object>>
wireFormatOptions
-
Fields inherited from class org.apache.activemq.transport.tcp.TcpTransportServer
allowLinkStealing, backlog, connectionTimeout, currentTransportCount, dynamicManagement, jmxPort, logWriterName, maximumConnections, 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 String
append(String currentScheme, String scheme)
protected org.apache.activemq.transport.tcp.TcpTransportServer.TransportInfo
configureTransport(org.apache.activemq.transport.tcp.TcpTransportServer server, Socket socket)
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)
protected AutoTcpTransportServer.ProtocolInfo
detectProtocol(byte[] buffer)
protected void
doStop(org.apache.activemq.util.ServiceStopper stopper)
org.apache.activemq.transport.TransportFactory
findTransportFactory(String scheme, Map<String,?> options)
org.apache.activemq.wireformat.WireFormatFactory
findWireFormatFactory(String scheme, Map<String,Map<String,Object>> options)
int
getMaxConnectionThreadPoolSize()
protected void
handleSocket(Socket socket)
protected void
initOpenWireProtocolVerifier()
protected void
initProtocolVerifiers()
protected boolean
isAllProtocols()
void
setAutoTransportOptions(Map<String,Object> autoTransportOptions)
void
setEnabledProtocols(Set<String> enabledProtocols)
void
setMaxConnectionThreadPoolSize(int maxConnectionThreadPoolSize)
Set the number of threads to be used for processing connections.void
setProtocolDetectionTimeOut(int protocolDetectionTimeOut)
void
setWireFormatFactory(org.apache.activemq.wireformat.WireFormatFactory factory)
void
setWireFormatOptions(Map<String,Map<String,Object>> wireFormatOptions)
protected void
waitForProtocolDetectionFinish(Future<?> future, AtomicInteger readBytes)
-
Methods inherited from class org.apache.activemq.transport.tcp.TcpTransportServer
bind, createTransport, doHandleSocket, doStart, getBacklog, getConnectionTimeout, getCurrentTransportCount, getJmxPort, getLogWriterName, getMaximumConnections, getMaxInactivityDuration, getMaxInactivityDurationInitalDelay, getMinmumWireFormatVersion, getSocketAddress, getSocketBufferSize, getSoTimeout, getWireFormatFactory, isAllowLinkStealing, isDynamicManagement, isSslServer, isStartLogging, isTrace, isUseQueueForAccept, 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
-
autoTransportOptions
protected Map<String,Object> autoTransportOptions
-
enabledProtocols
protected Set<String> enabledProtocols
-
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:
IOException
URISyntaxException
-
-
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:
setWireFormatFactory
in 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:
handleSocket
in 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:
configureTransport
in 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)
-
setEnabledProtocols
public void setEnabledProtocols(Set<String> enabledProtocols)
-
setAutoTransportOptions
public void setAutoTransportOptions(Map<String,Object> autoTransportOptions)
-
doStop
protected void doStop(org.apache.activemq.util.ServiceStopper stopper) throws Exception
- Overrides:
doStop
in classorg.apache.activemq.transport.tcp.TcpTransportServer
- Throws:
Exception
-
detectProtocol
protected AutoTcpTransportServer.ProtocolInfo detectProtocol(byte[] buffer) throws IOException
- Throws:
IOException
-
-