camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Achim Nierbeck <bcanh...@googlemail.com>
Subject recipientList inside SEDA route with CXF
Date Thu, 29 Sep 2011 12:58:00 GMT
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&amp;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/>

Mime
View raw message