Sorry in advance if I should have posted that in ActiveMQ list, but here is
our case.
We are running the same test with two different setups:

Setup 1:
------------
We are using a single ActiveMQ broker and a single Camel with the routes:

from( "jetty://http://..."; ).inOnly( "activemq:queue:queue2" )

from("activemq:queue:queue2?maxConcurrentConsumers=100").bean( myProcessor,
"delay" )

The activeMQ component uses
a org.springframework.jms.connection.CachingConnectionFactory

myProcess.delay() delays for 200 ms


Setup 2:
------------
We are using two ActiveMQ brokers and a single Camel with the routes:

from( "jetty://http://..."; ).inOnly( "activemq1:queue:queue1" )

from(
"activemq1:queue:queue1?maxConcurrentConsumers=100").inOnly(
"activemq2:queue:queue2"
)

from("activemq2:queue:queue2?maxConcurrentConsumers=100").bean(
myProcessor, "delay" )

Both activeMQ components use their
own org.springframework.jms.connection.CachingConnectionFactory
------------------------

All ActiveMQ brokers are identical, with:

- kahadb
- <policyEntry queue=">" queuePrefetch="20" producerFlowControl="false"
optimizedDispatch="true" useCache="true">
- <memoryUsage limit="4 gb"/>
- <transportConnector name="openwire" uri="tcp://0.0.0.0:xxxx"/>

We test the setup by sending http requests from jmeter with 40 threads and
1200 tps filter. We monitor the enqueue and dequeue rates of all the
queues, and notice that:

Setup 1:
------------
queue2 enqueue: ~900 tps
queue2 dequeue: ~50 tps


Setup 2:
------------
queue1 enqueue: ~1200 tps
queue1 dequeue: ~1200 tps
queue2 enqueue: ~1200 tps
queue2 dequeue: ~150 tps

This means that the 2nd setup causes the brokers to behave much better and
gives us a much higher throughput for our processor.
How can this be explained? Is there any configuration that will let us
achieve the same performance with a single broker?

Thank you
Xenofon

Reply via email to