camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Strachan" <james.strac...@gmail.com>
Subject Re: SEDA with Apache Camel
Date Tue, 26 Aug 2008 08:19:28 GMT
2008/8/25 RobMMS <robert.pelger@t-systems-mms.com>:
>
> Hi guys, thanks for your answers so far...
>
>
> James.Strachan wrote:
>>
>>
>> Yes, definitely!
>>
>> Its easier to use the bean binding - then you effectively hide the
>> camel APIs from your spring beans.
>>
>> e.g.
>>
>> from("seda:someQueue").bean("myBeanName").to("seda:AnotherQueue");
>>
>> http://activemq.apache.org/camel/bean-integration.html
>>
>> Where your bean looks something like
>>
>> public class Bar {
>>
>>     public String doSomething(String body) {
>>       return "Hello " + body;
>>    }
>> }
>>
>
> That was exactly what i was looking for!
>
>
>
> James.Strachan wrote:
>>
>>
>> Endpoints in Camel are all configurable; they typically inherit the
>> default thread pool - but you can customize that. However I note that
>> the current SedaConsumer assumes a single thread for processing :)
>> We're not yet using a threadpool for a single consumer. We should add
>> that :)
>>
>>
>
> So, is it planned to be added for one of the next releases?
> Or could you give me some hints how this could be implemented? I guess the
> main issue here is to synchronize the concurrent polling of the
> BlockingQueue?
>
>
>
> James.Strachan wrote:
>>
>>
>> The main missing bit is the current SEDA component assumes all
>> messages will be processed; there's no 'Resource Controller'. If you
>> want some kind of resource controller you could put a route before or
>> after the invocation of your bean to route the message to different
>> endpoints based on the message payload or whatever.
>>
>> e.g.
>> from("seda:a").filter().xpath("/whatever").bean("myBean").to("seda:b");
>>
>> Similarly error handling is decoupled from the SEDA component as well
>> - you can attach error handlers at any point in your route - or
>> customize a global error handler etc.
>> http://activemq.apache.org/camel/error-handler.html
>>
>>
>
> Ok, but we could "simulate" a Ressource Controller somehow with using Camel
> routing/error handling.
>
>
>
> James.Strachan wrote:
>>
>>
>> Currently there's no support for dynamically resizing of the queue
>> size - but mostly thats due to the default implementation of
>> BlockingQueue we use - but its easy to create a different
>> implementation using whatever Queue implementation you want.
>>
>> e.g. see the constructor
>>
>>     public SedaEndpoint(String endpointUri, BlockingQueue<Exchange> queue)
>> {
>>
>>
>
> Ok, basically this would be possible, too, I guess.
>
>
>
> James.Strachan wrote:
>>
>>
>>> Is it possible to notify a Ressource Controller about the queue size, so
>>> that he could react by, e.g. increasing the Thread Pool?
>>> Or is this just done internally by the SEDA-component, and I actually
>>> don't
>>> have to concern about that?
>>
>> Its probably best to do this inside the component/endpoint
>> implementation; e.g. the producer can notify the queue/threadpool when
>> a new message has been added to the queue which could prompt an
>> increase of the pool.
>>
>>
>>> Would it be possible override default behaviour? (i.e. to override the
>>> Seda-Component)
>>
>> Maybe we should have 2 implementations; the current simple 1 thread
>> per consumer option and another better - dynamic threadpool option?
>>
>
>
> Maybe we can conclude that there is quite a bit of work to do to get a
> "real" SEDA thing running ;-)
> Nevertheless I think it's worth investing some time into that, or do you
> have any alternatives that would serve as well as SEDA here?

I don't think it'd be that much work to create a SEDA endpoint
implementation that was capable of using a thread pool to support
concurrent processing of requests; I can see folks wanting it. Fancy
taking a stab at trying to implement it? :)
http://activemq.apache.org/camel/contributing.html

we love contributions! :)

-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://open.iona.com

Mime
View raw message