You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Colin MacNaughton (JIRA)" <ji...@apache.org> on 2009/02/16 06:13:00 UTC

[jira] Created: (AMQ-2115) activemq-flow: Enhancements/Refactoring to prototype, Network Flow Control, use of Dispatcher for RemoteConnections, non blocking i/o building blocks

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.


[jira] Resolved: (AMQ-2115) activemq-flow: Enhancements/Refactoring to prototype, Network Flow Control, use of Dispatcher for RemoteConnections, non blocking i/o building blocks

Posted by "Hiram Chirino (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/AMQ-2115?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Hiram Chirino resolved AMQ-2115.
--------------------------------

    Resolution: Fixed

Colin, nice additions!  Patch applied.

> 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.


[jira] Updated: (AMQ-2115) activemq-flow: Enhancements/Refactoring to prototype, Network Flow Control, use of Dispatcher for RemoteConnections, non blocking i/o building blocks

Posted by "Colin MacNaughton (JIRA)" <ji...@apache.org>.
     [ 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.