This is the idea that one process takes things off of one queue and then places it on N other queues, or sends the information to other destinations. For instance, a process may pull a message off a queue and then either (a) invoke a CICS transaction or (b) put the message on another queue if the transaction fails.
IBM's MQSeries MQ Systems Integrator product acts as a message router.
The above description very specific to MQ, but routing of messages is larger than MQ. All messages need routing unless it is an anonymous broadcast (ethernet style). Fast messaging systems tend to route using distributed routing tables, managed by the messaging subsystem. These key by labels attached to messages. These labels define the routing policy appropriate for that message including destination(s), transactionality, priority, time to live (TTL), max hops etc.
Examples: TIBCO Rendezvous. I'm sure there are more but this is the only one which I know in some detail. --RichardHenderson.
Actually the MQSi is just a for-instance. The kind of thing I've implemented you could do with any JMS implementation... --KyleBrown
Okay, on reflection its just a terminology thing. I also have something called a router-object which is a much more specific thing. It is just an address translator, more like the network element. Sorry for any confusion. Delete at will :)--RichardHenderson.