[ https://issues.apache.org/activemq/browse/AMQ-999?page=all ]
james strachan resolved AMQ-999. -------------------------------- Fix Version/s: 4.1 Resolution: Fixed Patches applied with thanks Rob! I made a minor change to the patch so that the code still works on Mono 1.0; I used the class AutoResetEvent instead of EventWaitHandle to avoid compile errors in Dispatcher.cs and DispatchingThead.cs - see the TODO notes in those files in case you can think of a cleaner solution. Cheers! > Message dispatcher issues (use dedicated dispatching thread for each session) > ----------------------------------------------------------------------------- > > Key: AMQ-999 > URL: https://issues.apache.org/activemq/browse/AMQ-999 > Project: ActiveMQ > Issue Type: Improvement > Components: NMS (C# client) > Affects Versions: 4.0.2 > Environment: Windows > Reporter: Rob Lugt > Assigned To: james strachan > Fix For: 4.1 > > Attachments: amq999-patch.txt, AtomicBoolean.cs, DispatchingThread.cs > > > There are a number of issues with the dispatching of inbound messages. > - A slow consumer will potentially use and block all ThreadPool threads > - Use of a ThreadPool thread to dispatch a single message is inefficient due > to context switching > - No mechanism to suspend asynchronous delivery to a session (i.e. > Connection.Stop() is currently a no-op) > - Retroactive consumer is currently broken because retoractive messages are > delivered before the listener delegate is assigned. > - [minor] Application cannot predict which thread messages will be dispatched > on > All of these problems can simply be resolved by creating a dedicated > dispatcher thread for a session -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/activemq/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira