Hi,
You can set the request context on the message to workaround this issue.
Here is an example from camel-cxf unit test[1] that you can take a look.
[1]https://svn.apache.org/repos/asf/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfProducerContextTest.java
On 9/29/11 10:16 PM, Achim Nierbeck wrote:
I did take a look at the sources and I think I found the
root of my problem, though I'm not sure how to get around it:
RecipientList class contains a producer cache,
in this cache the RecipientListProcessor class does store the
endpoints depending on the uri as key.
Now since only my header changes I don't know how to get around this.
Any ideas?
Thanks in advance, Achim
2011/9/29 Achim Nierbeck<bcanh...@googlemail.com>:
Ok,
some more worrying details.
Right now I have two Remote Hosts
After a successful run on Host A a second run is done (not parallel
but sequential) on Host B.
And I'm able to see that the header.address is set to host B still I
see that the request is made on Host A.
Is this intentional, are there any ways of not "remembering" which
call did go to which Host?
Thanks again, Achim
2011/9/29 Achim Nierbeck<bcanh...@googlemail.com>:
Hi
using Camel 2.8.0 I'm having the following scenario.
I'm using the CXF for connecting to a couple .NET Webservices.
<!-- CXF config -->
<cxf:cxfEndpoint id="productionServer"
serviceClass="net.testservices.productionservice._2011_07.IService"
endpointName="s:basicHttpProductionService"
serviceName="s:ProductionService"
wsdlURL="classpath:/wsdl/_1.wsdl" xmlns:s="http://tempuri.org/"
xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<cxf:properties>
<entry key="dataFormat" value="POJO" />
</cxf:properties>
<cxf:outInterceptors>
<ref bean="loggingOutInterceptor" />
</cxf:outInterceptors>
</cxf:cxfEndpoint>
Now I have a route for looking up some data in the DB for example also
looking for a free
WebService to call:
<camel:route id="pollQueue">
<camel:from
uri="timer://pollQueueTimer?fixedRate=true&period=30000" />
... do preparation ....
... also set the address of the remote host into the header of the exchange ...
... call the "production" route ...
<camel:to uri="seda:production" />
</camel:route>
the production route does call the Webservice on the available remote
host as follows
... again a couple of preparations beforehand ....
<!-- Altering Body to contain no data -->
<camel:setBody>
<camel:mvel>[ ]</camel:mvel>
</camel:setBody>
<!-- service call -->
<camel:setHeader headerName="operationName">
<camel:constant>ProduceData</camel:constant>
</camel:setHeader>
... the address of the remote webservice was previously added to the
header in the starting route ...
... I needed to set the parallelProcessing to true, if not everything
fails because the Timer Route tries to start another recipientList ...
<camel:recipientList parallelProcessing="true">
<camel:simple>cxf:bean:productionServer?address=${header.address}</camel:simple>
</camel:recipientList>
... some more calls checking data, errorhandling and so forth ....
Now the following happened to me when I had more than one Remote Host
available:
Calls to Host A did run on Host B
Results expecting to be retrieved from Host A where polled from Host B.
Now I wonder if the calls to certain Methods are cached or if the
"re-running" timmer route does
interfere somehow with the already running route.
A Complete run of a route can take up to about 30 Minutes after that
the "Production"-Route is done.
Since there are multiple hosts available we want to do parallel processing.
Any hints are welcome,
Achim
--
--
*Achim Nierbeck*
Apache Karaf<http://karaf.apache.org/> Committer& PMC
OPS4J Pax Web<http://wiki.ops4j.org/display/paxweb/Pax+Web/>
Committer& Project Lead
blog<http://notizblog.nierbeck.de/>
--
--
*Achim Nierbeck*
Apache Karaf<http://karaf.apache.org/> Committer& PMC
OPS4J Pax Web<http://wiki.ops4j.org/display/paxweb/Pax+Web/>
Committer& Project Lead
blog<http://notizblog.nierbeck.de/>
--
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.javaeye.com (Chinese)
Twitter: willemjiang
Weibo: willemjiang