I am wondering whether there are plans to support any kind of clustered ordered message processing in JBoss Messaging?
By this I mean some mechanism by which messages on a single queue can be 'grouped' together, such that the message broker guarantees that they are processed sequentially (even across a pool of distributed MDB consumers).
This feature is invaluable if JMS messages are being used to signal JBoss jBPM process transitions. In this case, it is absolutely critical that these messages are processed in order, otherwise transitions may be signalled from an invalid state! Currently, the only ways I can see of ensuring this are by having single-threaded message processing, which critically limits execution scalability, or by having multiple queues, which limits deployment scalability.
If, however, JMS message grouping was supported it would be a simple matter to group jBPM signal messages by their process instance ID - thereby ensuring that the signals for a given process instance are always received in order, but allowing transitions for many independent process instances to be processed concurrently.
I am aware of two other third-party JMS implementations which support this king of messaging functionality by extending the JMS API:
1. "Message Groups" in ActiveMQ 4.0
2. "Unit-of-Order" in Weblogic 9
A better description of the problem (and third-party solutions) is on these corresponding pages:
Has anyone on the JBoss team considered implementing a similar feature? Alternatively, does anyone know how I might ensure ordering at the application level and still use the existing JBoss Messaging functionality?
Thanks for your help.