I attached a new patch fixing the issues you had pointed before.
Please find my comments in line
>A couple of comments from me:
>1) The two new tests are missing their licences.
License text is added
>2) getID vs getId
>I realise this was existing, and you are merely exposing in the interface, but is it possible to rename one to have a better name before we see the next ID vs Id defect?
I removed getID method to avoid confusions
>3) I wonder whether we really need the additional complication of AMQQueue#unregisterBlocked().
>Would it not sufficient to rely on your new condition "&& !isClosing()" in AMQChannel#unblock() to mean that SimpleAMQQueue's calls to checkCapacity()s will run without failure and remove the closed channel from the list? I realise this is not as timely as your 'active' method and will mean the channel remains in the list until the queue depth falls below the flowResumeCapacity before clean-up can occur. (AMQQueue's interface is already too complex)
I removed AMQQueue#unregisterBlocked declaration its implementations completely.
Also, initially I planed to change compareTo methods in AMQChannel and ServerSession to compare object addresses in memory but decided to leave current implementation which delegates compareTo to UUID instances.
What do you think about it?