[ 
https://issues.apache.org/activemq/browse/AMQ-2115?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Colin MacNaughton updated AMQ-2115:
-----------------------------------

    Attachment: nonblockingdisp.txt

Patch file. 

> 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
>
>         Attachments: nonblockingdisp.txt
>
>
> 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