Consumer threads are managed at the endpoint to achieve the optimal performance.
However, both multiple consumers (pub-sub style multicasting) as well as 'worker-pool' consumers dividing
exchanges amongst them are scheduled on their own threads and are provided with all exchanges.
To prevent duplicate exchange processing by worker-pool event handlers, they are all given an ordinal,
which can be used to determine whether he should process the exchange, or leave it for his brethren.
see http://code.google.com/p/disruptor/wiki/FrequentlyAskedQuestions#How_do_you_arrange_a_Disruptor_with_multiple_consumers_so_that_e