Thanks Hadrian Zbarcea:

..... it seems the discuss has stray away from my original question. 
the original question is : 

when execution logic of route cannot be expressed by camel's built in MEP. 
Is there  method which could be used to define a  custom execution logic which 
can invoke not only endpoint , but also other built in processors?

Here is a  example:
    there are some web services which could be used to query a person's 
infomation; we need try them one by one, until one webservice has return a 
given person's info.  
pseudocode expressed as following:

Person queryinfo(String name){
    String[] addresses = readFromCfg();
    for(String address : addresses){
        person = new webservice(address).queryInfo(name);
        if(person != null)
            return person;
    }
}

But using camel, I dont know how to write a route do same things;
Although recipeint list could do likeness. but I dont know how to  stop 
execution when a person infomation is got. (although I could raise a exception 
to force receipent list stop, but it's not reason-able);

So I am wonderring if camel could provide some mechanis which enable I write a 
custom logic to schedule execution of camel processor. it may looks like:

<route>
    <...>
    <setHeader name="addresses> <bean "readAddress"></setHeader>
    <customExecution ref="customExecution ">
        <recipientList> <header>singleAddress</header> </recipientList>
    </customExecution>
</route>

class customExecution {
void process(Exchange ex){
  String[] addresses = ex.getIn().getHeader("addresses");
  for(String address : addresses){
      ex.getIn().setHeader("singleAddress", address);
      getChildProcessor(0).process(ex);
      if(containsPerson(ex.getOut().getBody())){
        return;
      }
  }
}
----- Original Message ----- 
From: "Hadrian Zbarcea" <[email protected]>
To: <[email protected]>
Sent: Tuesday, November 08, 2011 12:53 PM
Subject: Re: Should camel extend the way of custom logical of camel route?


> Sure you can, there is also a loop [1] you could use for repetitive 
> invocations. You can also define your own interceptor, which could also 
> use a builder if you want to configure any kind of custom logic you 
> might dream of. There's only so much we can provide out of the box.
> 
> Cheers,
> Hadrian
> 
> [1] http://camel.apache.org/loop.html
> 
> 
> 
> On 11/07/2011 10:09 PM, xuhb wrote:
>> Thanks Willem:
>>     It seems the intercept is a extension of interceptor which enable user 
>> to define intercept logic with camel description language;
>> Although camel provide predefined control logic: stop route&  skip ;  But  
>> if we need other executing logic, could I define it?
>>
>> for example: could I define how many times the processor will be executed 
>> with intercept?
>>
>>
>> ----- Original Message -----
>> From: "Willem Jiang"<[email protected]>
>> To:<[email protected]>
>> Sent: Monday, November 07, 2011 6:44 PM
>> Subject: Re: Should camel extend the way of custom logical of camel route?
>>
>>
>>> I think you can do the same thing with Intercept[1].
>>>
>>> [1]http://camel.apache.org/intercept.html
>>>
>>> On 11/7/11 1:51 PM, xuhb wrote:
>>>> When the application's execution logic is sophisticate , we can using 
>>>> endpoint and java bean  to define a custom logic ;
>>>>
>>>> Here is a limitation: " only endpoint could be invoked in the custom 
>>>> execution logic", so how about to support another mechanism which enable 
>>>> user to define custom logical which could invoke processors defined in 
>>>> route (also endpoint can be invoked)?
>>>>
>>>> Is this worth to do for camel?
>>>>
>>>> Following is a proto-type (which is not good, because the implementation 
>>>> way violate the natural usage of camel's component);
>>>>
>>>> 1)extending a policy ,the policy enable user to retrieve the child 
>>>> processor with index or processor id; and the end-user could invoke the 
>>>> child processor as they want;
>>>> 2) change Pipeline , enable populate all child processors;
>>>
>>>
>>> --
>>> Willem
>>> ----------------------------------
>>> FuseSource
>>> Web: http://www.fusesource.com
>>> Blog:    http://willemjiang.blogspot.com (English)
>>>           http://jnn.javaeye.com (Chinese)
>>> Twitter: willemjiang
>>> Weibo: willemjiang
>>>
>

Reply via email to