If you're willing to implement a custom policy, you could implement
onEchangeDone()

http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/spi/RoutePolicy.html#onExchangeDone%28org.apache.camel.Route,%20org.apache.camel.Exchange%29

You could subclass RoutePolicySupport and override onExchangeDone,
which is a no-op there.

The route would look like:

 from("jms:somequeue")
.routeId("my.route").routePolicyRef("cleanupPolicy")
.processRef("someRandomProcessor")
.processRef("someProcessorThatSetsThreadLocalValue")   ....
.to("jms:someotherqueue")

N.B. the route must have an explicit ID for the policy to find it.

On Tue, Mar 26, 2013 at 9:13 AM, davelund <david.r.l...@gmail.com> wrote:
> We are currently using ThreadLocal to store some information that gets
> included in a log4j converter (and is used in other projects that dont have
> camel in). Is there a callback I can use that for all routes in my context
> so that at the end of the route it will get called (without explicitly
> setting it) For example:
> from("jms:somequeue")
>   .processRef("someRandomProcessor")
>   .processRef("someProcessorThatSetsThreadLocalValue")
>   ....
>   .to("jms:someotherqueue")
>
>
> Ideally I'd like the threadlocal cleared when the exchange has been written
> to the queue, without adding a processor that explicitly clears it (as
> developers when adding new routes will forget to do it). I know the
> onCompletion runs in a seperate thread so isn't fit for my purpose. I've
> noticed  syncronisations and unitofworks, but cant seem to find any
> documentation on it. Would this be fit for purpose?
>
>
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/Clearing-ThreadLocal-when-exchange-completes-tp5729849.html
> Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to