When I increase to 100, it goes up to 80 max and then again comes down slowly to same range of 25-33. Its non transacted only.
If u see now: 599 0.12% 500000 9 0 0 E E - PERF.CAMEL.TCOM.FINANCIALFEED.OMS.PUB.1 702 0.14% 500000 8 0 0 E E - PERF.CAMEL.TCOM.FINANCIALFEED.OMS.PUB.2 628 0.13% 500000 7 0 0 E E - PERF.CAMEL.TCOM.FINANCIALFEED.OMS.PUB.3 Mon Jun 8 04:32:13 CDT 2015 Only 9,8,7 threads and messages on queue are 599,702,628 I am pushing a continuous load. Pasting the part of blueprint(some java classes are used in real code. This code is edited for perf test run) ------------------------- <?xml version="1.0" encoding="UTF-8"?> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camel="http://camel.apache.org/schema/blueprint" xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0" xsi:schemaLocation=" http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.1.0.xsd"> <cm:property-placeholder id="fuse-oms-financial-feed-bundle-config" persistent-id="com.tgt.rjf.oms.financial.feed" update-strategy="reload"> <cm:default-properties /> </cm:property-placeholder> <bean id="myAggregationStrategy" class="com.tgt.tcom.il.aggregator.MyAggregationStrategy" /> <bean id="removeSpacesFromFile" class="com.tgt.tcom.il.financial.RemoveSpacesFromFile" /> <bean id="removeSpecialChar" class="com.tgt.tcom.il.financial.RemoveSpecialCharFromFile" /> <bean id="setHeaders" class="com.tgt.tcom.il.financial.SetHeadersForRoutes"></bean> <bean id="executor" class="java.util.concurrent.Executors" factory-method="newFixedThreadPool"> <argument index="0" value="16" /> </bean> <bean id="exceptionmessage" class="com.tgt.tcom.il.error.ErrorHandler" /> <bean id="userException" class="java.lang.IllegalArgumentException"> <argument index="0" value="UserException" /> </bean> <!-- Queue Manager Connection factory(s) --> <bean id="wmqConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory"> <property name="CCDTURL"> <bean class="com.tgt.tcom.il.financial.MQConnectionFactoryUtil" factory-method="convert"> <argument value="${financial.WMQ.CCDTfile_Stage}" /> </bean> </property> <property name="queueManager" value="${financial.WMQ.QMName_Stage3}" /> </bean> <!-- Cache Connection Factory --> <bean id="cachingWmqConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory" destroy-method="destroy"> <property name="targetConnectionFactory" ref="wmqConnectionFactory" /> <property name="cacheConsumers" value="true" /> <property name="reconnectOnException" value="true" /> <property name="sessionCacheSize" value="10" /> </bean> <!--Spring Transaction Manager --> <bean id="wmqTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager"> <property name="connectionFactory" ref="wmqConnectionFactory" /> </bean> <!--JMS components used for Endpoints --> <bean id="wmq-qm" class="org.apache.camel.component.jms.JmsComponent"> <property name="connectionFactory" ref="cachingWmqConnectionFactory" /> <property name="transactionManager" ref="wmqTransactionManager" /> <property name="transacted" value="false" /> <property name="cacheLevelName" value="CACHE_AUTO" /> <property name="concurrentConsumers" value="40" /> <property name="maxConcurrentConsumers" value="60" /> </bean> <camelContext id="FinancialFeed-Pub" errorHandlerRef="EH" xmlns="http://camel.apache.org/schema/blueprint"> <propertyPlaceholder id="properties" location="blueprint:fuse-oms-financial-feed-bundle-config" /> <errorHandler type="DeadLetterChannel" deadLetterUri="wmq-qm:queue:{{financial.Perf.WMQ.FinFeedErrorQueue}}" id="EH"> </errorHandler> <onException> <description> What to be done on exception Send to Error queue </description> <exception>java.lang.Exception</exception> <log message="Message not moved to Queue successfully due to ${exception.message}" loggingLevel="ERROR"> <description> No redelivery attemmpts. For cases like HTTP 500, socket, just increase the value of maximumRedeliveries and delay Logging error message </description> </log> <process ref="exceptionmessage"> <description> Original payload message in one queue like our ORIG queues Generate exception message in java code </description> </process> <process ref="removeSpecialChar"> <description> Original payload message in one queue like our ORIG queues Generate exception message in java code </description> </process> <to uri="wmq-qm:queue:{{financial.Perf.WMQ.FinFeedErrorQueue}}" /> </onException> <route customId="true" handleFault="true" id="FinFeedRouterMainRoute1"> <from uri="wmq-qm:queue:{{financial.Perf.WMQ.OMSPub1Queue}}" /> <process ref="setHeaders" /> <log loggingLevel="INFO" logName="FinFeedPubAuditLog" message="Timestamp=${date:now:yyyy-MM-dd hh:mm:ss.SSS} : MessageType=${in.header.MessageType} : Action=${in.header.Action} : MessageSubType=${in.header.MessageSubType} : OrderNo=${in.header.OrderNo} : ReceiptNo=${in.header.ReceiptNo} : ShipmentNo=${in.header.ShipmentNo} : InvoiceNo=${in.header.InvoiceNo} " /> <to uri="wmq-qm:queue:{{financial.Perf.WMQ.DWSub1Queue}}" /> </route> <route handleFault="true" id="FinFeedRouterMainRoute2"> <from uri="wmq-qm:queue:{{financial.Perf.WMQ.OMSPub2Queue}}" /> <process ref="setHeaders" /> <log loggingLevel="INFO" logName="FinFeedPubAuditLog" message="Timestamp=${date:now:yyyy-MM-dd hh:mm:ss.SSS} : MessageType=${in.header.MessageType} : Action=${in.header.Action} : MessageSubType=${in.header.MessageSubType} : OrderNo=${in.header.OrderNo} : ReceiptNo=${in.header.ReceiptNo} : ShipmentNo=${in.header.ShipmentNo} : InvoiceNo=${in.header.InvoiceNo} " /> <to uri="wmq-qm:queue:{{financial.Perf.WMQ.DWSub2Queue}}" /> </route> <route handleFault="true" id="FinFeedRouterMainRoute3"> <from uri="wmq-qm:queue:{{financial.Perf.WMQ.OMSPub3Queue}}" /> <process ref="setHeaders" /> <log loggingLevel="INFO" logName="FinFeedPubAuditLog" message="Timestamp=${date:now:yyyy-MM-dd hh:mm:ss.SSS} : MessageType=${in.header.MessageType} : Action=${in.header.Action} : MessageSubType=${in.header.MessageSubType} : OrderNo=${in.header.OrderNo} : ReceiptNo=${in.header.ReceiptNo} : ShipmentNo=${in.header.ShipmentNo} : InvoiceNo=${in.header.InvoiceNo} " /> <to uri="wmq-qm:queue:{{financial.Perf.WMQ.DWSub3Queue}}" /> </route> </camelContext> </blueprint> ------------------------------------------------- Thanks and Regards, Vanshul Chawla -----Original Message----- From: contactreji [mailto:contactr...@gmail.com] Sent: Monday, June 08, 2015 2:55 PM To: users@camel.apache.org Subject: Re: JMS MQ performance improvement Interesting! 1) Can you observe how many threads initiate when your camel routes are not transacted? 2) And what if you further increase the value for maxConcurrentConsumers. Say about 100? Is the count still around 25-33 range itself? can you post your camel routes here. Cheers Reji ----- Reji Mathews Sr. Developer - Middleware Integration / SOA ( Open Source - Apache Camel & Jboss Fuse ESB | Mule ESB ) LinkedIn - http://in.linkedin.com/pub/reji-mathews/31/9a2/40a Twitter - reji_mathews -- View this message in context: http://camel.465427.n5.nabble.com/JMS-MQ-performance-improvement-tp5767963p5767965.html Sent from the Camel - Users mailing list archive at Nabble.com.