You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Eernie <er...@finan.nl> on 2014/10/07 14:43:07 UTC

CXF 3.0.1 doesn't have concurrentConsumers

Hi, 

I'm currently migrating my code from cxf 2.6.1 to 3.0.1.
I'm having some problems with the jms protocol. We're currently using the
maxConcurrentConsumers from the jmsConfiguration. I see this property has
been removed. Can someone tell me how I should configure this now?
The Documentation isn't explaining how this should be configured. Atleast, I
didn't find it.

I did find a StackOverflow post, but now comments were post on that.

See:
http://stackoverflow.com/questions/24785219/apache-cxf-jms-3-0-and-spring-configuration#comment41150668_24785219

Thanks in advance,

Erwin Oldenkamp



--
View this message in context: http://cxf.547215.n5.nabble.com/CXF-3-0-1-doesn-t-have-concurrentConsumers-tp5749534.html
Sent from the cxf-user mailing list archive at Nabble.com.

Re: CXF 3.0.1 doesn't have concurrentConsumers

Posted by Eernie <er...@finan.nl>.
- Which provider do you use? 
I use the  Sonic provider.

- Did your jms performance with default settings decrease after the switch? 
I haven't had it running yet because of the missing parameters. 

I'll make it running and test the performance. 




--
View this message in context: http://cxf.547215.n5.nabble.com/CXF-3-0-1-doesn-t-have-concurrentConsumers-tp5749534p5749538.html
Sent from the cxf-user mailing list archive at Nabble.com.

Re: CXF 3.0.1 doesn't have concurrentConsumers

Posted by Christian Schneider <ch...@die-schneider.net>.
I just did some tests with a service that contains a sleep to simulate 
long response times.
I was able to reproduce problems with scalability for this scenario. So 
I opened issue https://issues.apache.org/jira/browse/CXF-6199 to track this.

What do you think about the two options to solve this?

Christian


On 15.01.2015 23:22, jamo wrote:
>
> Concurrent and maxConsumers is a requirement for scalable services. Keep in
> mind, throughput is impacted as much (or more) by service execution time as
> by CXF framework overhead.  If service execution takes 500 ms, and the
> request arrival rate is 10 requests per second, requests will queue up, and
> response time will elongate.  We cannot go into production with CXF JMS
> without a mechanism for configuring concurrency.
>
>
>
> --
> View this message in context: http://cxf.547215.n5.nabble.com/CXF-3-0-1-doesn-t-have-concurrentConsumers-tp5749534p5753084.html
> Sent from the cxf-user mailing list archive at Nabble.com.


-- 
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
http://www.talend.com


Re: CXF 3.0.1 doesn't have concurrentConsumers

Posted by jamo <ja...@hotmail.com>.



cschneider wrote
> The 3.x implementation does not use spring anymore. So we do not have 
> the spring implementations of MessageListenerContainer that worked with 
> separate consumers and polling.
> 
> If you look at 
> org.apache.cxf.transport.jms.JMSDestination.createTargetDestinationListener() 
> you see how the MessageListenerContainer we use now is created.
> If there is a transaction manager then we use the 
> PollingMessageListenerContainer which uses one thread. If there is no 
> transaction manager then we use a MessageListenerContainer based on a 
> MessageListener.
> 
> In my performance tests 
> (http://liquid-reality.de/display/liquid/2014/03/28/Revisiting+JMS+performance.+Improvements+in+CXF+3.0.0) 
> this worked at least as fast as the spring variant with several consumers.
> I only tested with ActiveMQ though so if you use a different provider 
> you may see a different performance.
> 
> So as a short answer you currently can not set the consumer threads. We 
> could add this if there is need but currently I did not find a good 
> reason. So I stayed with the simplest solution.

Concurrent and maxConsumers is a requirement for scalable services. Keep in
mind, throughput is impacted as much (or more) by service execution time as
by CXF framework overhead.  If service execution takes 500 ms, and the
request arrival rate is 10 requests per second, requests will queue up, and
response time will elongate.  We cannot go into production with CXF JMS
without a mechanism for configuring concurrency. 



--
View this message in context: http://cxf.547215.n5.nabble.com/CXF-3-0-1-doesn-t-have-concurrentConsumers-tp5749534p5753084.html
Sent from the cxf-user mailing list archive at Nabble.com.

Re: CXF 3.0.1 doesn't have concurrentConsumers

Posted by Christian Schneider <ch...@die-schneider.net>.
The 3.x implementation does not use spring anymore. So we do not have 
the spring implementations of MessageListenerContainer that worked with 
separate consumers and polling.

If you look at 
org.apache.cxf.transport.jms.JMSDestination.createTargetDestinationListener() 
you see how the MessageListenerContainer we use now is created.
If there is a transaction manager then we use the 
PollingMessageListenerContainer which uses one thread. If there is no 
transaction manager then we use a MessageListenerContainer based on a 
MessageListener.

In my performance tests 
(http://liquid-reality.de/display/liquid/2014/03/28/Revisiting+JMS+performance.+Improvements+in+CXF+3.0.0) 
this worked at least as fast as the spring variant with several consumers.
I only tested with ActiveMQ though so if you use a different provider 
you may see a different performance.

So as a short answer you currently can not set the consumer threads. We 
could add this if there is need but currently I did not find a good 
reason. So I stayed with the simplest solution.

Which provider do you use?
Did your jms performance with default settings decrease after the switch?

Christian


On 07.10.2014 14:43, Eernie wrote:
> Hi,
>
> I'm currently migrating my code from cxf 2.6.1 to 3.0.1.
> I'm having some problems with the jms protocol. We're currently using the
> maxConcurrentConsumers from the jmsConfiguration. I see this property has
> been removed. Can someone tell me how I should configure this now?
> The Documentation isn't explaining how this should be configured. Atleast, I
> didn't find it.
>
> I did find a StackOverflow post, but now comments were post on that.
>
> See:
> http://stackoverflow.com/questions/24785219/apache-cxf-jms-3-0-and-spring-configuration#comment41150668_24785219
>
> Thanks in advance,
>
> Erwin Oldenkamp
>
>
>
> --
> View this message in context: http://cxf.547215.n5.nabble.com/CXF-3-0-1-doesn-t-have-concurrentConsumers-tp5749534.html
> Sent from the cxf-user mailing list archive at Nabble.com.


-- 
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
http://www.talend.com