camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Clearing ThreadLocal when exchange completes
Date Thu, 28 Mar 2013 11:25:28 GMT
On Thu, Mar 28, 2013 at 9:36 AM, Raul Kripalani <raul@evosent.com> wrote:
> With this technique, developers  have to remember to add the custom
> processor at the start of each route. (Unless it's set from an
> interceptor...).
>
> Since the user explicitly asked for a non intrusive technique,
> EventNotifier is the only method that fulfills that requirement. Set once
> per Camel context and forget about it.
>
> And it's higher level, not fiddling with internal APIs.
>

That would only work if its the same thread that calls the listener at
exchange created and exchange done events. As he need to use that same
thread for clearing his thread locals.



> Just my 2 cents.
>
> Regards,
> Raúl.
>  On 28 Mar 2013 06:11, "Claus Ibsen" <claus.ibsen@gmail.com> wrote:
>
>> On Wed, Mar 27, 2013 at 10:02 PM, Christian Müller
>> <christian.mueller@gmail.com> wrote:
>> > Isn't it called in a separate thread, isn't it?
>> >
>>
>> Ah yeah, then use this as base class
>>
>> http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/support/SynchronizationAdapter.html
>>
>> And return false from the allowHandover method
>> Then its done on the same thread.
>>
>>
>> > Sent from a mobile device
>> > Am 27.03.2013 08:14 schrieb "Claus Ibsen" <claus.ibsen@gmail.com>:
>> >
>> >> You can use this method on the Exchange
>> >>
>> >>
>> >>
>> http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html#addOnCompletion(org.apache.camel.spi.Synchronization)
>> >>
>> >>
>> >> On Tue, Mar 26, 2013 at 2:13 PM, davelund <david.r.lund@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.
>> >>
>> >>
>> >>
>> >> --
>> >> Claus Ibsen
>> >> -----------------
>> >> Red Hat, Inc.
>> >> FuseSource is now part of Red Hat
>> >> Email: cibsen@redhat.com
>> >> Web: http://fusesource.com
>> >> Twitter: davsclaus
>> >> Blog: http://davsclaus.com
>> >> Author of Camel in Action: http://www.manning.com/ibsen
>> >>
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> Red Hat, Inc.
>> FuseSource is now part of Red Hat
>> Email: cibsen@redhat.com
>> Web: http://fusesource.com
>> Twitter: davsclaus
>> Blog: http://davsclaus.com
>> Author of Camel in Action: http://www.manning.com/ibsen
>>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
FuseSource is now part of Red Hat
Email: cibsen@redhat.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Mime
View raw message