I'm looking for advice on a JMS-based architecture...
My application needs to receive JMS messages on behalf of thousands of different destinations, and then deliver to the destinations via non-JMS protocols (i.e. this is a gateway). Allowable solutions are for all messages to originally by sent to one JMS queue, or to go to one queue per destination.
Solutions need to perform well with this large number of destinations (and many messages per second).
The requirements are:
- During the time a message is being delivered to one destination, no other message may be processed for that destination.
- Messages must be delivered FIFO per destination based on when they were sent into JMS
- None may be lost (JMS transaction semantics are adequate)
- Deliveries must take place in parallel to multiple destinations (except no parallelism per destination)
- There are several identical instances of the application, on different machines, that implement this, all running at once. They can communicate via a shared cache or JMS, but communication should be simple and minimal.
- The gateway will reside in a J2EE container, but is not required to use MDB's
Thanks in advance