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