The "Defining Routes" guide has the following bit about correlation:
When a router rule is activated, it can process messages passing in either
direction: from source to target or from target back to source. For example,
if a router rule is mediating a remote procedure call (RPC), the rule processes
requests, replies, and faults. How do you manage message correlation in this
case? One of the most effective and straightforward ways is to use a message
exchange object as the basis for processing messages. FUSE Mediation Router
uses message exchange objects (of org.apache.camel.Exchange type) in
its API for processing router rules.
The basic idea of the message exchange is that, instead of accessing requests,
replies, and faults separately, you encapsulate the correlated messages inside
a single object (an Exchange object). Message correlation now becomes trivial
from the perspective of a processor, because correlated messages are
encapsulated in a single Exchange object and processors gain access to
messages through the Exchange object.
We need to revisit this section in light of Claus Ibsen's feedback regarding the "Component User Guide" document:
> Exchange objects also provide a means of correlating messages, because related messages are stored in the same Exchange.
Hmm I dont see it like that. For instance using JMS messages are correlated using the JMSCorrelationID. Each message is stored in their own Exchange but they have a header with the CorrelationID so you can correlate them if needed.