THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
- Message arrives on the Queue
- The Queue notifies some interested Consumers that there is work to be done
- The Consumers notify their ConsumerTarget that they would like to do work
- The ConsumerTargets notify their Session that they would like to do work
- The Sessions notify their Connections that they would like to do work
- The Connections schedule themselves. This is the switch from the incoming Thread to the IO-Thread.
- The Scheduler kicks off a IO-Thread to process the work of a Connection
- The Connection iterates over its Sessions that want to do work
- The Sessions iterate over its ConsumerTargets that want to do work
- The ConsumerTargets iterate over its Consumers that want to do work
- The Consumer tries to pulls a message from the Queue
- If successful the message is put on the IO-buffer to be sent down the wire
Threading Model
Consumers are The consuming part is always invoked from the consuming connection's IO-Thread whereas the Queue publishing part might be invoked from different threads (producing connection's IO-Thread, Housekeeping thread for held or TTLed messages, a consuming connection's IO-Thread in case for message reject).
...