Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Extract Dispatcher code to separate class and validate interface
  2. Update AMQSession to use new Dispatcher interface.
  3. Augment FlowControllingBlockingQueue to allow the injection of 'ServiceRequests'

Further Details

Further details of the change can be found here .

Comment Responses

User

Comment

via

Response

rhs

AMQSession.syncDispatchQueue is used in 0-10 for this

email

This will not work if the dispatcher is performing the rollback (Deadlock).
Also we need to stop processing the messages immediately and not allow any further processing.

rhs

Agree the client is badly in need of some improvements in maintainability and readability, however in this particular case I don't think moving the rollback processing from one thread to another actually improves the situation significantly.

email

It is not so much moving from on thread to another but from moving from the AMQSession / Dispatcher objects to just the Dispatcher.

rhs

I suspect in order do this properly we really need to stop thinking in terms of code being associated with a given thread, and think instead about what locks we have, what data structures those locks protect, and which locks need to be held in order to execute a given piece of code.

email

The focus of this change was to consolodate the operations on the received messagse. I would like to see a clean interface where messages are passed in for for dispatching. The cleaning operations should then be full contained in that interface not in a couple of locations as it is currently.

rhs

Really we need to be able to articulate exactly what locks the client has, what data structure(s) each lock protects, and what order should be used to acquire multiple locks when necessary.

email

Agreed, documenting what we have and how it works would be very useful for this discussion.