Hi, Following on from looking at QPID-1871. I believe that there is quite a significant change required to ensure that the message order or rollback is maintained.
I propose that we extract the Dispatcher from AMQSession, which will simplify our biggest class (3100+ lines!) and show clear responsibility for incoming message processing. This will simplify rollback as the Dispatcher thread can be given full responsibility for clearing up the state that it knows best. Rather than the current situation where the calling thread does some work on AMQSession whilst the Dispatcher is running/stopping, then calls the the Dispatcher code directly clean up the remainder. All this while the Dispatcher may be processing a message. Change design posted here: http://cwiki.apache.org/confluence/display/qpid/0.6+Java+Client+Dispatcher+Changes Comments on the investigation, implications and design welcome. I'll capture the details on the wiki so we don't lose track of comments Martin -- Martin Ritchie --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:[email protected]
