[ 
https://issues.apache.org/jira/browse/CAMEL-4863?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13180449#comment-13180449
 ] 

Aaron Whiteside edited comment on CAMEL-4863 at 1/5/12 4:52 PM:
----------------------------------------------------------------

I'll come up with a demo to illustrate the problem, as the full route was using 
a custom component.

I talked this over with jamieg on IRC before opening a ticket. I can paste the 
full conversation here if you wish.

Also correct me if I am wrong: The <threads>/threads() DSL is intended to allow 
processing part of a route asynchronously, which also has the side effect of 
processing part of a route in parallel.

This is essentially what the seda endpoint provides, so in my eyes for my needs 
they are equivalent. I would note that using the threads DSL is also 
easier/cleaner syntactically, then having to use another route and seda.

So since the threads DSL is just a wrapper around a ServiceExecutor just like 
the seda endpoint is, they should be roughly the same in terms of performance - 
At least in my mind.
                
      was (Author: aaronjwhiteside):
    I'll come up with a demo to illustrate the problem, as the full route was 
using a custom component.

I talked this over with jamieg on IRC before opening a ticket. I can paste the 
full conversation here if you wish.
                  
> Using <threads>/threads() is ALOT slower than using the seda:endpoint
> ---------------------------------------------------------------------
>
>                 Key: CAMEL-4863
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4863
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.9.0
>         Environment: JBoss 7.1 CR1b
>            Reporter: Aaron Whiteside
>            Priority: Critical
>              Labels: performance, seda, threading, threads
>
> Snippets from my routing file:
> {code:xml}
> <threads maxPoolSize="10" maxQueueSize="10">
>    <to uri="jms:queue:testQueue?deliveryPersistent=true"/>
> </threads>
> {code}
> compared to:
> {code:xml}
> <to uri="seda:test?concurrentConsumers=10&size=10"/>
> {code}
> {code:xml}
> <from uri="seda:test?concurrentConsumers=10&size=10"/>
> <to uri="jms:queue:testQueue?deliveryPersistent=true"/>
> {code}
> Using <threads> I get about 600 requests/per second.
> Using seda endpoint I get about 3000 requests/per second.
> Looking at the thread pools created by Camel in jconsole: I can see that the 
> one created by <threads> is mostly idle as compared to the one created by the 
> seda endpoint which is always busy.
> Also in the MBean Camel creates for it's managed thread pools, for the 
> ThreadPool created by <threads> the TaskQueueSize attribute is almost always 
> 0 and never more than 1. This is in contrast to the TaskQueueSize attribute 
> on ThreadPool created by the seda endpoint which is always 10 (the seda queue 
> size, and obviously until all the tasks have completed).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to