My camel context is like this
<?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"> <!-- import the routes from another XML file --> <cm:property-placeholder id="fuse-experian-sendemail-bundle-config" persistent-id="com.tgt.rjf.fuse.experian.sendemail" update-strategy="reload"> <cm:default-properties /> </cm:property-placeholder> <bean id="removeSpacesFromFile1" class="com.tgt.rjf.fuse.experian.sendemail.RemoveSpacesFromFile" /> <bean id="loadCache" class="com.tgt.rjf.fuse.experian.sendemail.LoadCache" /> <bean id="retrieveCache1" class="com.tgt.rjf.fuse.experian.sendemail.RetrieveCacheData" /> <bean id="removeSpecialChar1" class="com.tgt.rjf.fuse.experian.sendemail.RemoveSpecialCharFromFile" /> <bean id="setHeaders1" class="com.tgt.rjf.fuse.experian.sendemail.SetHeadersForRoutes"></bean> <bean id="executor1" class="java.util.concurrent.Executors" factory-method="newFixedThreadPool"> <argument index="0" value="16" /> </bean> <!-- Queue Manager Connection factory(s) --> <bean id="wmqConnectionFactory1" class="com.ibm.mq.jms.MQQueueConnectionFactory"> <property name="CCDTURL"> <bean class="com.tgt.rjf.fuse.experian.sendemail.MQConnectionFactoryUtil" factory-method="convert"> <argument value="${email.WMQ.CCDTfile}" /> </bean> </property> <property name="queueManager" value="${email.WMQ.QMName}" /> </bean> <!-- Cache Connection Factory --> <bean id="cachingWmqConnectionFactory1" class="org.springframework.jms.connection.CachingConnectionFactory" destroy-method="destroy"> <property name="targetConnectionFactory" ref="wmqConnectionFactory1" /> <property name="cacheConsumers" value="true" /> <property name="reconnectOnException" value="true" /> <property name="sessionCacheSize" value="10" /> </bean> <!--Spring Transaction Manager --> <bean id="wmqTransactionManager1" class="org.springframework.jms.connection.JmsTransactionManager"> <property name="connectionFactory" ref="wmqConnectionFactory1" /> </bean> <!--JMS components used for Endpoints --> <bean id="wmq-qm1" class="org.apache.camel.component.jms.JmsComponent"> <property name="connectionFactory" ref="cachingWmqConnectionFactory1" /> <property name="transactionManager" ref="wmqTransactionManager1" /> <property name="transacted" value="false" /> <property name="cacheLevelName" value="CACHE_AUTO" /> <property name="concurrentConsumers" value="10" /> <property name="maxConcurrentConsumers" value="40" /> <property name="maxMessagesPerTask" value="100" /> </bean> <!-- Exception handler --> <bean id="exceptionmessage1" class="com.tgt.tcom.il.error.ErrorHandler" /> <camelContext id="camelContext1" errorHandlerRef="EH1" xmlns="http://camel.apache.org/schema/blueprint"> <propertyPlaceholder id="properties" location="blueprint:fuse-experian-sendemail-bundle-config" /> <errorHandler type="DeadLetterChannel" deadLetterUri="wmq-qm1:queue:{{email.Perf.WMQ.EmailError1Queue}}" id="EH1"> </errorHandler> <onException> <description>What to be done on exception Send to Error queue </description> <exception>java.lang.Exception</exception> <log message="Message ${body} 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="exceptionmessage1"> <description>Original payload message in one queue like our ORIG queues Generate exception message in java code </description> </process> <process ref="removeSpecialChar1"> <description>Original payload message in one queue like our ORIG queues Generate exception message in java code </description> </process> <to uri="wmq-qm1:queue:{{email.Perf.WMQ.EmailError1Queue}}" /> </onException> <route id="SendEmail" startupOrder="1"> <from uri="timer://TokenFetch?fixedRate=true&period=60000"></from> <setBody> <simple trim="false">Thats value for my cache </simple> </setBody> <log message="time executed now" /> <process ref="loadCache" /> <log message="Message out after loading Cache ${body}" /> <to uri="cache://ExperianTokenCache"></to> <setHeader headerName="Exchange.CONTENT_TYPE"> <camel:constant>application/x-www-form-urlencoded ; charset=UTF-8 </camel:constant> </setHeader> <log message="Token loaded to Cache"></log> </route> <route id="SendEmail1" startupOrder="2"> <from uri="cache://ExperianTokenCache?operation=GET&key=TokenCache" /> <log message="from cache now" /> <process ref="retrieveCache1" /> <setHeader headerName="TokenValue"> <simple>${body}</simple> </setHeader> <setProperty propertyName="tokenValueProp"> <simple>${body}</simple> </setProperty> <log message="Message header AuthorizationProp has value ${property.tokenValueProp}" /> <log message="Message header TokenValue has value ${in.header.TokenValue}" /> </route> <route id="SendEmail2" startupOrder="3"> <from uri="wmq-qm1:queue:{{email.Perf.WMQ.EmailIn1Queue}}"></from> <log message="Message consumed from queue {{email.Perf.WMQ.EmailIn1Queue}} ${body}" /> <setHeader headerName="Authorization"> <simple>${header.TokenValue}</simple> </setHeader> <log message="Message header Authorization has value ${header.TokenValue}" /> <setHeader headerName="Authorization1"> <simple>${property.tokenValueProp}</simple> </setHeader> <log message="Message header Authorization1 has value ${property.tokenValueProp}" /> <to uri="wmq-qm1:queue:{{email.Perf.WMQ.EmailOut1Queue}}"></to> <log message="Message sent to queue {{email.Perf.WMQ.EmailOut1Queue}} ${body}" /> </route> </camelContext> </blueprint> Values are visible in SendEmail1 route ie my second route. Same property not visible in next route. Any issues in above code Thanks and Regards, Vanshul Chawla -----Original Message----- From: Vanshul.Chawla [mailto:[email protected]] Sent: Wednesday, April 29, 2015 3:57 PM To: [email protected] Subject: RE: Passing header between routes How to access it back in other route? I tried that earlier and then accessed it via ${properties.XXX} but didn't work. Thanks and Regards, Vanshul Chawla -----Original Message----- From: mukundha [mailto:[email protected]] Sent: Wednesday, April 29, 2015 3:49 PM To: [email protected] Subject: Re: Passing header between routes Hi Chawla, Use the property instead of header, as the header will be different from exchange to exchange. please find the syntax below, <setProperty propertyName="name"> <simple>value</simple> </setProperty> Thanks, Mukundha Reddy -- View this message in context: http://camel.465427.n5.nabble.com/Passing-header-between-routes-tp5766477p5766485.html Sent from the Camel - Users mailing list archive at Nabble.com.
