Package org.apache.activemq.transport
Class WriteTimeoutFilter
java.lang.Object
org.apache.activemq.transport.TransportFilter
org.apache.activemq.transport.WriteTimeoutFilter
- All Implemented Interfaces:
Service
,Transport
,TransportListener
This filter implements write timeouts for socket write operations.
When using blocking IO, the Java implementation doesn't have an explicit flag
to set a timeout, and can cause operations to block forever (or until the TCP stack implementation times out the retransmissions,
which is usually around 13-30 minutes).
To enable this transport, in the transport URI, simpley add
For example (15 second timeout on write operations to the socket):
For example (enable default timeout on the socket):
To enable this transport, in the transport URI, simpley add
transport.soWriteTimeout=
.For example (15 second timeout on write operations to the socket):
<transportConnector
name="tcp1"
uri="tcp://127.0.0.1:61616?transport.soTimeout=10000&transport.soWriteTimeout=15000"
/>
For example (enable default timeout on the socket):
<transportConnector
name="tcp1"
uri="tcp://127.0.0.1:61616?transport.soTimeout=10000&transport.soWriteTimeout=15000"
/>
- Author:
- Filip Hanik
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static AtomicInteger
protected static long
protected static WriteTimeoutFilter.TimeoutThread
protected static ConcurrentLinkedQueue<WriteTimeoutFilter>
protected long
Fields inherited from class org.apache.activemq.transport.TransportFilter
next, transportListener
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected static boolean
deRegisterWrite
(WriteTimeoutFilter filter, boolean fail, IOException iox) static long
getSleep()
protected Socket
protected TimeStampStream
long
void
A one way asynchronous sendprotected static void
registerWrite
(WriteTimeoutFilter filter) static void
setSleep
(long sleep) void
setWriteTimeout
(long writeTimeout) void
start()
void
stop()
Methods inherited from class org.apache.activemq.transport.TransportFilter
asyncRequest, getNext, getPeerCertificates, getReceiveCounter, getRemoteAddress, getTransportListener, getWireFormat, isConnected, isDisposed, isFaultTolerant, isReconnectSupported, isUpdateURIsSupported, narrow, onCommand, onException, reconnect, request, request, setPeerCertificates, setTransportListener, toString, transportInterupted, transportResumed, updateURIs
-
Field Details
-
writers
-
messageCounter
-
timeoutThread
-
sleep
protected static long sleep -
writeTimeout
protected long writeTimeout
-
-
Constructor Details
-
WriteTimeoutFilter
-
-
Method Details
-
oneway
Description copied from interface:Transport
A one way asynchronous send- Specified by:
oneway
in interfaceTransport
- Overrides:
oneway
in classTransportFilter
- Throws:
IOException
-
getWriteTimeout
public long getWriteTimeout() -
setWriteTimeout
public void setWriteTimeout(long writeTimeout) -
getSleep
public static long getSleep() -
setSleep
public static void setSleep(long sleep) -
getWriter
-
getSocket
-
registerWrite
-
deRegisterWrite
-
start
- Specified by:
start
in interfaceService
- Overrides:
start
in classTransportFilter
- Throws:
Exception
- See Also:
-
stop
- Specified by:
stop
in interfaceService
- Overrides:
stop
in classTransportFilter
- Throws:
Exception
- See Also:
-