[
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:53 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 ExecutorService 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.
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.
> 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