activemq-flow: Enhancements/Refactoring to prototype, Network Flow Control, use
of Dispatcher for RemoteConnections, non blocking i/o building blocks
-----------------------------------------------------------------------------------------------------------------------------------------------------
Key: AMQ-2115
URL: https://issues.apache.org/activemq/browse/AMQ-2115
Project: ActiveMQ
Issue Type: Improvement
Affects Versions: incubation
Environment: n/a
Reporter: Colin MacNaughton
Fix For: incubation
Along with some other refactoring, these changes are an incremental step
towards support a non blocking i/o environment conducive to single/low thread
count broker.
Listing of changes:
1. Introduced org.apache.activemq.transport.DispatchableTransport and
DispatchableTransportServer. These can be provided a dispatcher and operate in
a non blocking fashion. They need to be backed by a FlowController to avoid
overflow.
2. Changed PipeTransportFactory to operate in non blocking fashion by
implementing above interfaces.
3. Added copy of org.apache.activemq.transport.nio package which are being
refactored so they can be used with above interfaces.
4. Modified RemoteProducer, RemoteConsumer and BrokerConnection to extend
RemoteConnection to take advantage of common network level changes described
below.
5. Changed RemoteConnection to incorporate network WindowLimiter which assert
flow control via protocol instead of relying on transport level flow control.
Also updated RemoteConnection to take a Dispatcher. Deleted
AbstractTestConnection.
6. Changed FlowController and PriorityFlowController not to implement
IFlowSink. Instead introduced org.apache.activemq.SingleFlowRelay which wraps
the FlowController and acts as a Sink/Source that does not queue messages that
it is passing through, this now acts as the output sink for RemoteConnection.
7. Modified test.proto ProtocolBuffers definition to include new FlowControl
message used to communicate space released by the flow controller in support of
using protocol based flowcontrol instead of transport based flow control.
8. Introduced org.apache.activemq.wireformat.StatefulWireformat which allows
stateful non blocking marshalling/unmarshalling. Changed
ProtoWireFormatFactory.TestWireformat to implement this so that non blocking
i/o can be achieved.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.