On Wed, Sep 14, 2011 at 11:17 AM, Achim Nierbeck <bcanh...@googlemail.com> wrote: > Hi Claus, > > yeah, that could be helpfull :) > Any timeline on this ;) > > On the other hand I'm wondering if there might be a more elegant way > of calling these WebServices that I just didn't think of yet. >
The error handler / onException should have a retryWhile predicate. So you can have it retry until the web service respond with an OK, or if you have some failsafe after 100+ attempts :) See examples here: http://camel.apache.org/exception-clause.html > regards, Achim > > 2011/9/13 Claus Ibsen <claus.ib...@gmail.com>: >> Hi >> >> Yeah the loop EIP should be improved to support a "do while" style as >> well. I have a vague memory of a JIRA ticket about this. >> Then you should be able to specify a predicate instead of the fixed number. >> >> >> >> On Tue, Sep 13, 2011 at 10:57 AM, Achim Nierbeck >> <bcanh...@googlemail.com> wrote: >>> Hi, >>> >>> I'm using Camel 2.8 in conjunction with camel-cxf. >>> >>> Now I have the following scenario. >>> >>> I have 2 specialized .NET services which do server me the following two >>> services >>> >>> - doSomeSpecialHandling >>> -- this is a rather lengthy process running which returns right after >>> start and keeps on processing >>> >>> - checkStatus >>> -- checks if the other process is still running >>> >>> >>> For the second service I have a speicalized route which looks like this: >>> >>> >>> <camel:route id="checkRoute"> >>> <camel:from uri="direct:checkRoute" /> >>> <camel:setBody> >>> <camel:mvel>[ ]</camel:mvel> >>> </camel:setBody> >>> <camel:doTry> >>> <camel:recipientList >>> parallelProcessing="true"> >>> >>> <camel:simple>cxf:bean:productionServer?address=${header.address}&wrappedStyle=true</camel:simple> >>> </camel:recipientList> >>> <camel:choice> >>> <camel:when> >>> <camel:mvel> >>> <![CDATA[request.body[0] != >>> 'Success' && request.body[0] != >>> 'Failure' && request.body[0] != 'Unknown']]> >>> </camel:mvel> >>> <delay> >>> >>> <constant>5000</constant> >>> </delay> >>> <camel:to >>> uri="direct:checkRoute" /> >>> </camel:when> >>> </camel:choice> >>> <camel:doCatch> >>> >>> <camel:exception>java.lang.Exception</camel:exception> >>> <camel:to >>> uri="direct:handleException" /> >>> </camel:doCatch> >>> </camel:doTry> >>> </camel:route> >>> >>> This Route runs recursively, after a while if the underlying system >>> takes to long, I'll run into a problem cause the stack runs full due >>> to the recursive calls. >>> Is there a way of looping with an unknown end? Cause the looping >>> component only loops for n-iterations where n needs to be known >>> beforehand. Basically I'm trying to >>> do a while(condition) loop with camel :) >>> >>> Any Idea is welcome. >>> >>> Thanks, Achim >>> >> >> >> >> -- >> Claus Ibsen >> ----------------- >> FuseSource >> Email: cib...@fusesource.com >> Web: http://fusesource.com >> Twitter: davsclaus, fusenews >> Blog: http://davsclaus.blogspot.com/ >> Author of Camel in Action: http://www.manning.com/ibsen/ >> > > > > -- > -- > *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/> > -- Claus Ibsen ----------------- FuseSource Email: cib...@fusesource.com Web: http://fusesource.com Twitter: davsclaus, fusenews Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/