camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From #S-SmixDev <smix...@dzbank.de>
Subject Correlation on payload with standard components
Date Fri, 07 Nov 2014 09:01:28 GMT

Hi,

I'm wondering if the following scenario can be implemented using standard
Camel components (ie. without using a custom processor and /or custom
components).

Consider a synchronous InOut exchange that triggers some asynchronous
backend processing. The response that needs to be generated for the
exchange requires the result of this asynchronous processing step.
Correlation of the original exchange and the backend result is possible via
data in the payload.

In Camel terms the routes would look somewhat akin to this:

from("receiveInOut").
process("add correlation ID to cache").
to("seda:triggerAsyc").
process("block until timeout or cache updated with correlation ID").
to("direct:generateResponse");

from("direct:backendResponse").
process("update cache with correlation id");


The main issue as I see it is that the "backendResponse" endpoint can
receive responses for various exchanges in more or less random order so I
cannot simply use an aggregation with pollEnrich. I could not find a
component that allows blocking on a cache update. My solution at the moment
would be to wrap the "add correlation ID", "triggerAsync", and "block on
cache" steps in a custom processor. That should work, but the scenario
seems common enough that I feel I might be missing some crucial puzzle
piece from the Camel toolbox. Am I?

Regards,
Jens


Mime
View raw message