I am using camel 2.5.0 and activemq 5.4.0 to create a simple route of the form dataset -> activemq:queue.in -> activemq:queue.out -> dataset. All are working fine and I the performance is more than 1K messages/sec.
However if I set transactions=true on the activemq component configuration, then I experience serious performance issues (5 messages/sec). I am testing using camel:run maven plugin. My configuration is the following: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amq="http://activemq.apache.org/schema/core" xmlns:camel="http://camel.apache.org/schema/spring" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> <!-- Allows us to use system properties as variables in this configuration file --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/> <!-- ActiveMQ Broker --> <broker id="broker" xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="data" useJmx="true" persistent="true" advisorySupport="false"> <destinationPolicy> <policyMap> <policyEntries> <policyEntry queue=">" producerFlowControl="false" optimizedDispatch="true"> <pendingQueuePolicy> <vmQueueCursor/> </pendingQueuePolicy> </policyEntry> </policyEntries> </policyMap> </destinationPolicy> <persistenceAdapter> <kahaDB directory="data/kahadb" enableIndexWriteAsync="true"/> </persistenceAdapter> <transportConnectors> <transportConnector name="nio" uri="nio://0.0.0.0:61616"/> </transportConnectors> </broker> <!-- Camel Context --> <camelContext xmlns="http://camel.apache.org/schema/spring" id="messaging" depends-on="broker"> <route> <from uri="dataset:loadtest?produceDelay=-1"/> <to uri="activemq:queue:queue.in"/> </route> </camelContext> <!-- Camel Components --> <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent"> <property name="connectionFactory" ref="pooledConnectionFactory"/> <!--property name="transacted" value="true"/> <property name="transactionManager" ref="transactionManager"/> <property name="transactionTimeout" value="300000"/--> <property name="acknowledgementModeName" value="AUTO_ACKNOWLEDGE"/> <property name="cacheLevelName" value="CACHE_AUTO"/> </bean> <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="nio://127.0.0.1:61616"/> <property name="useAsyncSend" value="true"/> </bean> <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"> <property name="connectionFactory" ref="connectionFactory"/> <property name="maxConnections" value="1"/> <property name="maximumActive" value="500"/> </bean> <!-- DataSet --> <bean id="loadtest" class="org.apache.camel.component.dataset.SimpleDataSet"> <property name="size" value="100000"/> </bean> <!-- Transaction Manager --> <bean id="transactionManager" class="org.jencks.factory.TransactionManagerFactoryBean"/> </beans> -- *Ioannis Canellos* http://iocanel.blogspot.com Integration Engineer @ Upstream S.A. <http://www.upstreamsystems.com>