My question is more towards retaining the message throughout the flow.
My application is quite complex, with intermediate checks to different systems. Each requires its own format, and only when all checks are successful, I need to pass on the original message to downstream system.
Lets say, we have 2 intermediate check systems, system1 and system2.
Both expect some part (a subset) of the original message M1 (which I get after splitting the incoming request using an XPath splitter).
system1 and system2 calls are webservice calls, and I need to build request object out of my original message, M1.
My problem is, as soon as I send a request to system1, I loose the original message, which I need for my system2, and subsequently downstream system.
I am using simple direct channels everywhere, and nothing complicated.
Is there a way, where in I can access the original message in the next channel(s)? These should be available only if the response from system1 is favorable, else these need to be routed to an aggregator directly.
Can the original message/context be passed in the header in every request (possible?) or are there any other cleaner alternatives?
(I might be missing something straight here as well!)
Let me know, if more details are required!
Edit: Interceptor is an option, but this is something we want to avoid, as this is not a security check or something similar. The system1 and system2 calls are very much part of the application logic, and come into the normal flow.