Claus,

That's useful, it would simplify my interface, but it wouldn't let me leave it alone.

My actual problem is that I need to be able to correlate the exchange that called my POJO with exchanges generated by calls from my POJO. To do this I need to access the correlation ID (if it's been set) or the exchange ID (if it hasn't) and then set them as headers.

The class that actually calls the other routes uses ProducerTemplate and I'm quite happy for that class to have Camel-specific code in it, but the business logic class shouldn't need to know anything about the correlation.

I've been looking at writing a custom InflightRepository, but that would have to map from thread ID, which won't work with the asynchronous processing (nor will any other thread-local approach). If I try to set the correlation ID as a property on my busines logic POJO I'll run into threading issues (it may be called concurrently).

Thanks

Jim

On 26/07/2011 07:06, Claus Ibsen wrote:
On Tue, Jul 26, 2011 at 7:39 AM, Jim Talbut<jtal...@spudsoft.co.uk>  wrote:
Hi,

I have a POJO that benefits from having a non-Camel interface (it means I
can know that the interface matches that of a given web service).

Internally this POJO needs to extract a couple of properties from the
Exchange.

Is there any way to get the "currently executing Exchange" without adding it
as a parameter to the POJO?
Most useful for me would be either a static method or a method on the
CamelContext, because they would allow me to move the Camel-specific
processing into a separate bean.

On trunk I have improved the bean component, so you can bind the
parameters in the method name option.
.to"(bean:myBean?method=myMethod(${body}, ${header.foo},
${header.bar}, 'This is a String'")

More details at:
http://camel.apache.org/bean-binding.html



Thanks

Jim




Reply via email to