On Fri, Mar 26, 2010 at 6:07 AM, ext2 <x...@tongtech.com> wrote: > > > In camel , try-catch means , if exception occurs , catch-clause will be > execute. > And how does camel define : What is message(catch-clause received) 's > content? > > Is the content exactly equals to the processed content where exception just > occurs? > > For pipe line , catch-clause will received a message whose content which > will be exactly where exception occurs; > But for multi-case , catch-clause can only received a message whose content > is the multi-case's received original message. > > So the pipe-line and multi-cast doesn't consistence. Is it the multi-case 's > bug ? for example: > > <doTry> > <process1> > <process2> > <doCatch>...</doCatch> > </doTry> > > If process2 failed , catch clause will received message which content is the > process1's result. > > But another multi-case example > > <dotry> > <multi-cast stopOnException="true"> > <pipeline> <process1><process2> </pipeline> > <pipeline> <process3> <process4> </pipeline> > </multi-cast> > <doCatch> </doCatch> > </dotry> > > If process2 failed , doCatch will received message whose content is original > message send to mult-cast, but not be the process1's result; > > So is it a bug of multi-cast pattern? >
That is how the multicast EIP pattern works. It sends the SAME message to X destinations. So if you continue routing AFTER the multicast you would use the original message. But Camel offers you to aggregate with the multicast. So in you case you can add a aggregationStrategy to multicast and let it just use the new exchange > > -- Claus Ibsen Apache Camel Committer Author of Camel in Action: http://www.manning.com/ibsen/ Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus