You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by damianharvey <Da...@aon.com.au> on 2011/01/09 22:43:53 UTC

How to improve Camel MQ performance

Does anyone have any tips on how to configure Camel to be more performant on
WebSphere MQ? I haven't seen any settings to allow MQ to use connection
pooling and I'm finding that it isn't performing well under load - I suspect
due to the overhead of opening and closing connections (it's about twice as
slow as the same service over HTTP). I have set the JMS consumer to have 30
concurrent consumers and this helped a little.

I have tried adding the following line to the Spring configuration to no
avail:

<bean
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
p:staticMethod="com.ibm.mq.MQEnvironment.addConnectionPoolToken" />

Is there anything else that I can do? Is anyone using MQ with Camel in a
high performance environment?

Thanks,

Damian.
-- 
View this message in context: http://camel.465427.n5.nabble.com/How-to-improve-Camel-MQ-performance-tp3334208p3334208.html
Sent from the Camel - Users mailing list archive at Nabble.com.

RE: How to improve Camel MQ performance

Posted by damianharvey <Da...@aon.com.au>.
Thanks Christian. That seems to have improved performance.

I had to remove the JMS user/pass from the UserCredentials Factory as Spring would complain that "SingleConnectionFactory does not support custom username and password"

      <bean id="jmsUserCredentialsFactoryAdapter" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
            <property name="targetConnectionFactory" ref="cachedConnectionFactory" />
            <!--
            <property name="username" value="${jms.username}" />
            <property name="password" value="${jms.password}" />
            -->
      </bean>


Please consider the environment before printing this email.
From: Christian Schneider [via Camel] [mailto:ml-node+3334250-1605032308-144200@n5.nabble.com]
Sent: Monday, 10 January 2011 9:31 AM
To: Damian Harvey
Subject: Re: How to improve Camel MQ performance

Hi Damian,

you could try to wrap your connectionfactory in a spring
CachingConnectionFactory :
http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/jms/connection/CachingConnectionFactory.html

It has several settings that could speed up camel jms.

Christian


Am 09.01.2011 23:17, schrieb damianharvey:

>
> My Spring JMS configuration (note that I have commented out the transaction handling to improve performance):
>
>        <!-- Beans to create the MQ endpoint using JMS -->
>
>        <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" p:staticMethod="com.ibm.mq.MQEnvironment.addConnectionPoolToken" />
>
>        <bean id="mqConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
>              <property name="hostName" value="${mq.host}" />
>              <property name="port" value="${mq.port}" />
>              <property name="queueManager" value="${mq.queueManager}" />
>              <property name="transportType" value="1" />
>              <property name="channel" value="SYSTEM.DEF.SVRCONN" />
>        </bean>
>
>        <bean id="jmsUserCredentialsFactoryAdapter" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
>              <property name="targetConnectionFactory" ref="mqConnectionFactory" />
>              <property name="username" value="${jms.username}" />
>              <property name="password" value="${jms.password}" />
>        </bean>
>
>        <!-- bean id="jtm" class="org.springframework.jms.connection.JmsTransactionManager102">  <constructor-arg index="0" ref="jmsUserCredentialsFactoryAdapter" />  <constructor-arg
>              index="1" value="false" />  </bean -->
>
>        <bean id="jc" class="org.apache.camel.component.jms.JmsConfiguration">
>              <constructor-arg index="0" ref="jmsUserCredentialsFactoryAdapter" />
>        </bean>
>
>        <bean id="mq" class="org.apache.camel.component.jms.JmsComponent">
>              <property name="configuration" ref="jc" />
>              <property name="acknowledgementModeName" value="AUTO_ACKNOWLEDGE" />
>              <property name="transacted" value="false" />
>              <!-- property name="transactionManager" ref="jtm" / -->
>        </bean>
>
>        <bean id="auditRoute" class="com.aon.camel.routes.impl.AuditRouteBuilder">
>              <property name="jmsComponent" ref="mq" />
>        </bean>
>
>        <bean id="jmsRoute" class="com.aon.camel.routes.impl.JmsRouterRouteBuilder">
>              <property name="jmsComponent" ref="mq" />
>              <property name="requestQueue" value="${jms.requestQueue}" />
>              <property name="requestQueueOps" value="${jms.requestQueueOps}" />
>              <property name="replyQueue" value="${jms.replyQueue}" />
>        </bean>
>
>
> Damian Harvey | Aon Australia/Pacific
>
> Level 31, 201 Kent Street Sydney NSW 2000
> t: +61292537000 | f: +61292537952
> e: [hidden email]</user/SendEmail.jtp?type=node&node=3334250&i=0><mailto:[hidden email]</user/SendEmail.jtp?type=node&node=3334250&i=1>>
>
> Please consider the environment before printing this email.
> From: Christian Schneider [via Camel] [mailto:[hidden email]</user/SendEmail.jtp?type=node&node=3334250&i=2>]
> Sent: Monday, 10 January 2011 9:14 AM
> To: Damian Harvey
> Subject: Re: How to improve Camel MQ performance
>
> Can you post your camel jms and configuration?
>
> Christian
>
>
> Am 09.01.2011 22:43, schrieb damianharvey:
>
>> Does anyone have any tips on how to configure Camel to be more performant on
>> WebSphere MQ? I haven't seen any settings to allow MQ to use connection
>> pooling and I'm finding that it isn't performing well under load - I suspect
>> due to the overhead of opening and closing connections (it's about twice as
>> slow as the same service over HTTP). I have set the JMS consumer to have 30
>> concurrent consumers and this helped a little.
>>
>> I have tried adding the following line to the Spring configuration to no
>> avail:
>>
>> <bean
>> class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
>> p:staticMethod="com.ibm.mq.MQEnvironment.addConnectionPoolToken" />
>>
>> Is there anything else that I can do? Is anyone using MQ with Camel in a
>> high performance environment?
>>
>> Thanks,
>>
>> Damian.
> --
> ----
> http://www.liquid-reality.de
>
>
> ________________________________
> View message @ http://camel.465427.n5.nabble.com/How-to-improve-Camel-MQ-performance-tp3334208p3334238.html<http://camel.465427.n5.nabble.com/How-to-improve-Camel-MQ-performance-tp3334208p3334238.html?by-user=t>
>
>
> ________________________________
>
> This communication (and any attachments) is directed in confidence to the addressee(s) listed above, and may not otherwise be distributed, copied or used. The contents of this communication may also be subject to privilege, and all rights to that privilege are expressly claimed and not waived. If you have received this communication in error, please notify us by reply e-mail or by telephone and delete this communication (and any attachments) without making a copy.
>
> Before opening or using attachments, you should check them for viruses and defects. We do not accept liability in connection with computer virus, data corruption, delay, interruption, unauthorised access or unauthorised amendment.
>

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


________________________________
View message @ http://camel.465427.n5.nabble.com/How-to-improve-Camel-MQ-performance-tp3334208p3334250.html
To unsubscribe from How to improve Camel MQ performance, click here<http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=3334208&code=RGFtaWFuLmhhcnZleUBhb24uY29tLmF1fDMzMzQyMDh8LTIwNDE4MDIxMzg=>.

________________________________

This communication (and any attachments) is directed in confidence to the addressee(s) listed above, and may not otherwise be distributed, copied or used. The contents of this communication may also be subject to privilege, and all rights to that privilege are expressly claimed and not waived. If you have received this communication in error, please notify us by reply e-mail or by telephone and delete this communication (and any attachments) without making a copy.

Before opening or using attachments, you should check them for viruses and defects. We do not accept liability in connection with computer virus, data corruption, delay, interruption, unauthorised access or unauthorised amendment.

-- 
View this message in context: http://camel.465427.n5.nabble.com/How-to-improve-Camel-MQ-performance-tp3334208p3334279.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: How to improve Camel MQ performance

Posted by Christian Schneider <ch...@die-schneider.net>.
Hi Damian,

you could try to wrap your connectionfactory in a spring 
CachingConnectionFactory :
http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/jms/connection/CachingConnectionFactory.html

It has several settings that could speed up camel jms.

Christian


Am 09.01.2011 23:17, schrieb damianharvey:
>
> My Spring JMS configuration (note that I have commented out the transaction handling to improve performance):
>
>        <!-- Beans to create the MQ endpoint using JMS -->
>
>        <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" p:staticMethod="com.ibm.mq.MQEnvironment.addConnectionPoolToken" />
>
>        <bean id="mqConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
>              <property name="hostName" value="${mq.host}" />
>              <property name="port" value="${mq.port}" />
>              <property name="queueManager" value="${mq.queueManager}" />
>              <property name="transportType" value="1" />
>              <property name="channel" value="SYSTEM.DEF.SVRCONN" />
>        </bean>
>
>        <bean id="jmsUserCredentialsFactoryAdapter" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
>              <property name="targetConnectionFactory" ref="mqConnectionFactory" />
>              <property name="username" value="${jms.username}" />
>              <property name="password" value="${jms.password}" />
>        </bean>
>
>        <!-- bean id="jtm" class="org.springframework.jms.connection.JmsTransactionManager102">  <constructor-arg index="0" ref="jmsUserCredentialsFactoryAdapter" />  <constructor-arg
>              index="1" value="false" />  </bean -->
>
>        <bean id="jc" class="org.apache.camel.component.jms.JmsConfiguration">
>              <constructor-arg index="0" ref="jmsUserCredentialsFactoryAdapter" />
>        </bean>
>
>        <bean id="mq" class="org.apache.camel.component.jms.JmsComponent">
>              <property name="configuration" ref="jc" />
>              <property name="acknowledgementModeName" value="AUTO_ACKNOWLEDGE" />
>              <property name="transacted" value="false" />
>              <!-- property name="transactionManager" ref="jtm" / -->
>        </bean>
>
>        <bean id="auditRoute" class="com.aon.camel.routes.impl.AuditRouteBuilder">
>              <property name="jmsComponent" ref="mq" />
>        </bean>
>
>        <bean id="jmsRoute" class="com.aon.camel.routes.impl.JmsRouterRouteBuilder">
>              <property name="jmsComponent" ref="mq" />
>              <property name="requestQueue" value="${jms.requestQueue}" />
>              <property name="requestQueueOps" value="${jms.requestQueueOps}" />
>              <property name="replyQueue" value="${jms.replyQueue}" />
>        </bean>
>
>
> Damian Harvey | Aon Australia/Pacific
>
> Level 31, 201 Kent Street Sydney NSW 2000
> t: +61292537000 | f: +61292537952
> e: damian.harvey@aon.com.au<ma...@aon.com.au>
>
> Please consider the environment before printing this email.
> From: Christian Schneider [via Camel] [mailto:ml-node+3334238-1494567908-144200@n5.nabble.com]
> Sent: Monday, 10 January 2011 9:14 AM
> To: Damian Harvey
> Subject: Re: How to improve Camel MQ performance
>
> Can you post your camel jms and configuration?
>
> Christian
>
>
> Am 09.01.2011 22:43, schrieb damianharvey:
>
>> Does anyone have any tips on how to configure Camel to be more performant on
>> WebSphere MQ? I haven't seen any settings to allow MQ to use connection
>> pooling and I'm finding that it isn't performing well under load - I suspect
>> due to the overhead of opening and closing connections (it's about twice as
>> slow as the same service over HTTP). I have set the JMS consumer to have 30
>> concurrent consumers and this helped a little.
>>
>> I have tried adding the following line to the Spring configuration to no
>> avail:
>>
>> <bean
>> class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
>> p:staticMethod="com.ibm.mq.MQEnvironment.addConnectionPoolToken" />
>>
>> Is there anything else that I can do? Is anyone using MQ with Camel in a
>> high performance environment?
>>
>> Thanks,
>>
>> Damian.
> --
> ----
> http://www.liquid-reality.de
>
>
> ________________________________
> View message @ http://camel.465427.n5.nabble.com/How-to-improve-Camel-MQ-performance-tp3334208p3334238.html
> To unsubscribe from How to improve Camel MQ performance, click here<http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=3334208&code=RGFtaWFuLmhhcnZleUBhb24uY29tLmF1fDMzMzQyMDh8LTIwNDE4MDIxMzg=>.
>
> ________________________________
>
> This communication (and any attachments) is directed in confidence to the addressee(s) listed above, and may not otherwise be distributed, copied or used. The contents of this communication may also be subject to privilege, and all rights to that privilege are expressly claimed and not waived. If you have received this communication in error, please notify us by reply e-mail or by telephone and delete this communication (and any attachments) without making a copy.
>
> Before opening or using attachments, you should check them for viruses and defects. We do not accept liability in connection with computer virus, data corruption, delay, interruption, unauthorised access or unauthorised amendment.
>

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


RE: How to improve Camel MQ performance

Posted by damianharvey <Da...@aon.com.au>.

My Spring JMS configuration (note that I have commented out the transaction handling to improve performance):

      <!-- Beans to create the MQ endpoint using JMS -->

      <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" p:staticMethod="com.ibm.mq.MQEnvironment.addConnectionPoolToken" />

      <bean id="mqConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
            <property name="hostName" value="${mq.host}" />
            <property name="port" value="${mq.port}" />
            <property name="queueManager" value="${mq.queueManager}" />
            <property name="transportType" value="1" />
            <property name="channel" value="SYSTEM.DEF.SVRCONN" />
      </bean>

      <bean id="jmsUserCredentialsFactoryAdapter" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
            <property name="targetConnectionFactory" ref="mqConnectionFactory" />
            <property name="username" value="${jms.username}" />
            <property name="password" value="${jms.password}" />
      </bean>

      <!-- bean id="jtm" class="org.springframework.jms.connection.JmsTransactionManager102"> <constructor-arg index="0" ref="jmsUserCredentialsFactoryAdapter" /> <constructor-arg
            index="1" value="false" /> </bean -->

      <bean id="jc" class="org.apache.camel.component.jms.JmsConfiguration">
            <constructor-arg index="0" ref="jmsUserCredentialsFactoryAdapter" />
      </bean>

      <bean id="mq" class="org.apache.camel.component.jms.JmsComponent">
            <property name="configuration" ref="jc" />
            <property name="acknowledgementModeName" value="AUTO_ACKNOWLEDGE" />
            <property name="transacted" value="false" />
            <!-- property name="transactionManager" ref="jtm" / -->
      </bean>

      <bean id="auditRoute" class="com.aon.camel.routes.impl.AuditRouteBuilder">
            <property name="jmsComponent" ref="mq" />
      </bean>

      <bean id="jmsRoute" class="com.aon.camel.routes.impl.JmsRouterRouteBuilder">
            <property name="jmsComponent" ref="mq" />
            <property name="requestQueue" value="${jms.requestQueue}" />
            <property name="requestQueueOps" value="${jms.requestQueueOps}" />
            <property name="replyQueue" value="${jms.replyQueue}" />
      </bean>


Damian Harvey | Aon Australia/Pacific

Level 31, 201 Kent Street Sydney NSW 2000
t: +61292537000 | f: +61292537952
e: damian.harvey@aon.com.au<ma...@aon.com.au>

Please consider the environment before printing this email.
From: Christian Schneider [via Camel] [mailto:ml-node+3334238-1494567908-144200@n5.nabble.com]
Sent: Monday, 10 January 2011 9:14 AM
To: Damian Harvey
Subject: Re: How to improve Camel MQ performance

Can you post your camel jms and configuration?

Christian


Am 09.01.2011 22:43, schrieb damianharvey:

> Does anyone have any tips on how to configure Camel to be more performant on
> WebSphere MQ? I haven't seen any settings to allow MQ to use connection
> pooling and I'm finding that it isn't performing well under load - I suspect
> due to the overhead of opening and closing connections (it's about twice as
> slow as the same service over HTTP). I have set the JMS consumer to have 30
> concurrent consumers and this helped a little.
>
> I have tried adding the following line to the Spring configuration to no
> avail:
>
> <bean
> class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
> p:staticMethod="com.ibm.mq.MQEnvironment.addConnectionPoolToken" />
>
> Is there anything else that I can do? Is anyone using MQ with Camel in a
> high performance environment?
>
> Thanks,
>
> Damian.

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


________________________________
View message @ http://camel.465427.n5.nabble.com/How-to-improve-Camel-MQ-performance-tp3334208p3334238.html
To unsubscribe from How to improve Camel MQ performance, click here<http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=3334208&code=RGFtaWFuLmhhcnZleUBhb24uY29tLmF1fDMzMzQyMDh8LTIwNDE4MDIxMzg=>.

________________________________

This communication (and any attachments) is directed in confidence to the addressee(s) listed above, and may not otherwise be distributed, copied or used. The contents of this communication may also be subject to privilege, and all rights to that privilege are expressly claimed and not waived. If you have received this communication in error, please notify us by reply e-mail or by telephone and delete this communication (and any attachments) without making a copy.

Before opening or using attachments, you should check them for viruses and defects. We do not accept liability in connection with computer virus, data corruption, delay, interruption, unauthorised access or unauthorised amendment.

-- 
View this message in context: http://camel.465427.n5.nabble.com/How-to-improve-Camel-MQ-performance-tp3334208p3334243.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: How to improve Camel MQ performance

Posted by Christian Schneider <ch...@die-schneider.net>.
Can you post your camel jms and configuration?

Christian


Am 09.01.2011 22:43, schrieb damianharvey:
> Does anyone have any tips on how to configure Camel to be more performant on
> WebSphere MQ? I haven't seen any settings to allow MQ to use connection
> pooling and I'm finding that it isn't performing well under load - I suspect
> due to the overhead of opening and closing connections (it's about twice as
> slow as the same service over HTTP). I have set the JMS consumer to have 30
> concurrent consumers and this helped a little.
>
> I have tried adding the following line to the Spring configuration to no
> avail:
>
> <bean
> class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
> p:staticMethod="com.ibm.mq.MQEnvironment.addConnectionPoolToken" />
>
> Is there anything else that I can do? Is anyone using MQ with Camel in a
> high performance environment?
>
> Thanks,
>
> Damian.

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