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.