I am using Camel 2.10.3 in my current project. Use case - I have a program which listens to income messages then persists the raw trade message into a DB and split the message into small sections based on some expression. This small sections are then transformed based on business logic and send to downstream.
Problem - There are cases observed where after the message being persisted nothing else is performed, neither no trace of exception. On detecting the trade I replayed the raw message through the queue, and it was processed successfully. In my program I heavily depend on JmsTimeStamp of the exchange header. The route is mentioned below. Any suggestion would be helpful. Route - <route id="fitOptInMsgRoute"> <routeContext id="fitOptsRoutesCtx" xmlns="http://camel.apache.org/schema/spring"> <from ref="fitOptInMsgQueue"/> <transacted ref="PROPAGATION_REQUIRED_FIT_OPTION"/> <setProperty propertyName="jmsxDeliveryCount"> <constant>{{mySystem.route.jmsx.delivery.count}}</constant> </setProperty> <choice> <when> <simple>${in.header.JMSXDeliveryCount} != null and ${property.jmsxDeliveryCount} > ${in.header.JMSXDeliveryCount} </simple> <process ref="fitOptStpIdValidator"/> <process ref="fitOptExchangeHelper"/> <doTry> <bean ref="rawMsgSqlInputBuilder" method="populateFITOptParam"/> <to uri="{{raw.message.insertSql.uri}}"/> <doCatch> <exception>org.springframework.dao.DuplicateKeyException</exception> <log message="Duplicate Raw trade message..." loggingLevel="INFO" logName="com.bbb.sbrs.mySystem.util.FITOptInLogger"/> </doCatch> </doTry> <process ref="revertExchangeProcessor"/> <log message="Raw FIT Trade Message persisted and processing..." loggingLevel="INFO" logName="com.bbb.sbrs.mySystem.util.FITOptInLogger"/> <split parallelProcessing="true" stopOnException="false" strategyRef="fitOptAggregator"> <xpath>/insertDeal/request/dealData/trade/trade</xpath> <log message="Processing message after split" loggingLevel="INFO" logName="com.bbb.sbrs.mySystem.util.FITOptInLogger" /> <setProperty propertyName="SID"> <simple>SOME_SID</simple> </setProperty> <to uri ="direct:sendFITOptTrdToSBR"/> </split> </when> <otherwise> <log message="This message has been exceed number of retry. Exhausting it now with body.${body}." loggingLevel="ERROR" logName="com.bbb.sbrs.mySystem.util.FITOptInLogger" /> </otherwise> </choice> </route> <route id="sendFITOptTrdToSBR"> <from uri="direct:sendFITOptTrdToSBR" /> <onException useOriginalMessage="true"> <exception>java.lang.Exception</exception> <handled><constant>true</constant></handled> <process ref="aggregateExcepHelper" /> <bean ref="excepLogInputPopulator" method="populateFITOptExcepParam"/> <to uri="direct:exceptionHandler" /> </onException> <process ref="fitOptTradeMsgFilter"/> <process ref="fitOptMessageValidator"/> <process ref="tradeMsgInfoPopulator"/> <to uri="direct:trdMsgPersistence"/> <process ref="fitOptXsltProcHelper"/> <choice> <when> <xpath>@somExpression</xpath> <log message="Applying transformation logic for xyz ." loggingLevel="INFO" logName="com.bbb.www.sbrs.mySystem.util.InLogger"/> <to uri="xslt:xsl/mapping1.xsl" /> </when> <when> <xpath>@someExpression</xpath> <log message="Applying transformation logic for abc." loggingLevel="INFO" logName="com.bbb.www.sbrs.mySystem.util.InLogger"/> <to uri="xslt:xsl/mapping2.xsl" /> </when> <when> <xpath>@someExpression</xpath> <log message="Applying transformation logic for pqr." loggingLevel="INFO" logName="com.bbb.www.sbrs.mySystem.util.InLogger"/> <to uri="xslt:xsl/mapping3.xsl" /> </when> <when> <xpath>@someExpression</xpath> <log message="Applying transformation logic for wxy." loggingLevel="INFO" logName="com.bbb.www.sbrs.mySystem.util.InLogger"/> <to uri="xslt:xsl/option/mapping4.xsl" /> </when> <when> <xpath>@someExpression and @someExpression1</xpath> <log message="Applying transformation logic for hedge." loggingLevel="INFO" logName="com.bbb.www.sbrs.mySystem.util.InLogger"/> <to uri="xslt:xsl/cash/mapping5.xsl" /> </when> </choice> <to uri="xslt:xsl/util/RemoveNameSpace.xsl"/> <log message="Message trnsformed.${body}" loggingLevel="WARN" logName="com.bbb.sbrs.mySystem.util.FITOptInLogger" /> <doTry> <process ref="updateTransformedTradeSqlBuilder" /> <to uri="{{trade.message.updateTransformedSql.uri}}" /> <doCatch> <exception>java.lang.Exception</exception> <log message="Error occurred while updating transformed sbrs out message in DB." loggingLevel="ERROR" logName="com.bbb.sbrs.mySystem.util.FITOptInLogger" /> <bean ref="excepLogInputPopulator" method="populateFITOptExcepParam"/> <to uri="direct:exceptionHandler" /> </doCatch> </doTry> <process ref="idempUtilSBR"/> <idempotentConsumer eager="false" messageIdRepositoryRef="reportingMsgIdRepo"> <header>messageId</header> <process ref="sbrsOutProcessor"/> <to ref="sbrsOutMsgQueue" /> </idempotentConsumer> <doTry> <process ref="updateSBRSentStatSqlBuilder" /> <to uri="{{trade.message.updateSBRSentStatusSql.uri}}" /> <doCatch> <exception>org.springframework.dao.DataAccessException</exception> <log message="Error occurred while updating sent to sbrs status in DB." loggingLevel="ERROR" logName="com.bbb.sbrs.mySystem.util.FITSBROutLogger" /> <bean ref="excepLogInputPopulator" method="populateFITOptExcepParam"/> <to uri="direct:exceptionHandler" /> </doCatch> </doTry> </route> </routeContext> -- View this message in context: http://camel.465427.n5.nabble.com/My-camel-route-not-able-to-handle-exception-tp5739381.html Sent from the Camel - Users mailing list archive at Nabble.com.