This is an interesting mix of needs.  Using message groups to ensure ordered
processing of messages while at least some of the messages take excessive
periods of time to process.

Can the slow-processing messages be separated from the message-groups?

Note the default message group handling uses a hash bucket of group
assignments to consumers, meaning multiple groups are assigned as a unit. 
So, assigning the slow messages to only one group will not prevent mixing
with fast messages (remember one consumer may be assigned multiple groups).

The -1 sequence on the group only takes effect as that message is dispatched
to the assigned owner (when it has prefetch space available), meaning it
goes to the same old owner as the message immediately before it, but then
new messages may go to a different owner.  So, actually, a higher prefetch
may be needed so that the -1 sequence message can be dispatched, but then it
will only affect messages that come after it, not those from before. 
Assigning a sequence number of -1 for the group on the slow messages would
do the trick - if combined with a prefect of 1.

Of course, if the fast and slow messages are in the same group, then the
fast messages need to wait for the slow ones to process.  That's the point
of message groups.

Another thought - is it possible eliminate the use of message groups adding
a message aggregator (camel) to collect all of the messages that require
sequential processing and feed them back out as a single message?




--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Message-Groups-and-long-running-transactions-tp3499325p4698769.html
Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.

Reply via email to