On Wed, Aug 19, 2009 at 3:51 AM, Kaver<[email protected]> wrote:
>
> Hello.
>
> I've a route:
> from("restlet:http://localhost:9080/sts/request?restletMethod=POST";).process(requestProcessor);
>
> I create requestProcessor in Spring and inject it to my RouteBuilder. Should
> requestProcessor be thread-safe? If there will be several messages from
> endpoint, there will be several threads performing on one instance
> requestProcessor (like in servlets), or these events will be quened and will
> be processed in single thread?
> --

You get concurrency by the consumer whether it supports concurrent
consumers. The HTTP based obviously supports that so the reslet will
process concurrent incoming requests and thus Camel will route
concurrently as well.

So your requestProcessor will be invoked concurrently also. So yes
design it to be thread safe.


As its provided by Spring you can let spring provide its lifecycle.
Spring uses singleton by default. You can change that to prototype so
a new instance is returned on each request. And then use .processRef
to refer to by its spring bean id and you get a new instance for each
request.

But I suggest to just let processor be thread safe, eg by doing all
you need inside the process method, without having state on the class
itself and you should be safe.


> View this message in context: 
> http://www.nabble.com/Is-Processor-is-thread-safe--tp25036519p25036519.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Reply via email to