Responsibilities

(correct as of 2014-12-03).

 We want to refactor the queue / message delivery model within the Java Broker.  The current code has evolved overtime and the division of responsibilities is poor. This makes the code difficult to reason about and makes writing good unit tests hard.

In order to support this effort I have written down all the responsibilities of the classes involved in queues / message delivery.

Virtualhost

QueueImpls

These are the queue implementation objects eg. StandardQueue, LVQQueue etc.  These are model objects. 

 

ConsumerTarget 

(These are a protocol specific representation of a Consumer.  They are not model objects).

 

QueueConsumers  

(These are model objects (they extend Consumer).  They represent the Consumers themselves.

CreditManager

 (Manage credit)

FilterManager

 (Implement filtering such as JMS message selectors).