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.

Reply via email to