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&amp;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&amp;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.

Reply via email to