strictOrderDispatch does not wait for acks. Given 2 consumers(c), normal dispatch would round robin to each consumer, m0 to c0, m1 to c1, m2 to c0 etc. With strictOrderDispatch, m0-N (where N = c0's prefetch Value) will go to c0, then c1 will get any remaining messages up to its prefetch, etc. So prefetch has a big bearing, a really large prefetch would make c0 effectively exclusive. With exclusive consumer, only one of c0 or c1 will be considered active.
On 11 December 2013 17:29, dimitry12 <dimi...@pletnikov.com> wrote: > Hello! I'd like to confirm my understanding of dispatch policies in ActiveMQ. > > When we deal with *queues* and have strictOrderDispatch="true" set in > policyEntry - then ActiveMQ ensures that all messages are processed strictly > in order. If there are multiple consumers then: > - ActiveMQ will feed #prefetch-limit messages to the first consumer > - wait until this consumer acknowledges/processes all prefetched messages > - after that: feed messages to the next consumer > - wait.. repeat.. > Is the above description generally correct? > > If we deal with queues and have an exclusive consumer, then (ignoring > priorities for now) ActiveMQ feeds all messages to this consumer and all > other consumers get nothing. Thus effectively messages are processed > strictly in order. > > My understanding is: for queues both strictOrderDispatch and exclusive > consumer produce the same effect = messages are processed strictly in order. > Please, correct me if I'm wrong. > > Thanks! > > > > -- > View this message in context: > http://activemq.2283324.n4.nabble.com/Request-for-clarification-strictOrderDispatch-true-vs-Exclusive-Consumers-for-queues-tp4675408.html > Sent from the ActiveMQ - User mailing list archive at Nabble.com. -- http://redhat.com http://blog.garytully.com