Guys, can u help out?

lekkie wrote:
> 
> I tried this but it did not work.
> 
> Something strange however, happens. I noticed if I use the default
> aggregationStrategy, the log:Response1 will be logged (as null), however
> if I changed it to myAggregatorStrategy, it never prints the log (let
> alone log:Response3), instead it prints log:Response2 which prints the old
> and new exchange separately (at different times).
> 
>  <route>
>       <from uri="direct:AggregatorServices" />        
>       <aggregate strategyRef="myAggregatorStrategy" batchSize="2"
> batchTimeout="30000">
>       <!-- <aggregate batchSize="2" batchTimeout="30000"
> groupExchanges="true">--> 
>               <correlationExpression>
>                       <constant>true</constant>
>                   </correlationExpression>    
>                   <to uri="log:Response1"/>
>                     <from uri="direct:ProcessorServices" />  
>           </aggregate>            
>           <to uri="log:Response2"/>
> </route>
> <route>
>       <from uri="direct:ProcessorServices" />         
>               <to uri="log:KimonoResponse3"/>
>     </route>
> 
> Something is wrong somewhere, just can't figure it out yet. And I will
> think log:response1 and log:Response2 should return the same content (The
> aggregated exchange).
> 
> It seems a split (new thread) happens on the aggregate. I noticed If I log
> in the <aggregate/> and after it, the outside log prints first before the
> <aggregate/> operation is done. Why is that? 
> 
> regards.
> 
> 
> 
> Claus Ibsen-2 wrote:
>> 
>> Hi
>> 
>> I have created an unit test which does what you want
>> http://svn.apache.org/viewvc?rev=902559&view=rev
>> 
>> You should use batchSize = 2 and not OUIT batch size. OUT batch size
>> is when you have multiple correlation groups.
>> Which yo do not have since you use true as the correlation id.
>> 
>> Also note that the default timeout of 1 sec will kick in, so if you
>> send in message in slow pace then set it to a higher number.
>> 
>> The aggregator will be overhauled in the future, hopefully in 2.3
>> 
>> 
>> On Fri, Jan 22, 2010 at 10:05 AM, lekkie <[email protected]> wrote:
>>>
>>> Hi,
>>>
>>> I want to combine messages from 2 different exchanges into a single
>>> exchange, from the EIP patterns aggregation strategy seems to be right
>>> pattern to use.
>>>
>>> However, after reading the doc
>>> (http://camel.apache.org/aggregator.html), I
>>> followed the instructns but my aggregation strategy only returns the
>>> last
>>> exchange, even though I specifically configured it to send messages only
>>> when the outbatchsize is 2.
>>>
>>> I implemented a custom aggregationstrategy with shoulld combine my
>>> exchanges
>>> into one. I log the event in the class and it works fine, what is beyond
>>> me
>>> is why it returns only the last exchange.
>>>
>>>
>>> See my config here:
>>> <bean id="myAggregatorStrategy"
>>> class="org.tempuri.MyAggregationStrategy"/>
>>>
>>> <osgi:camelContext xmlns="http://camel.apache.org/schema/spring";
>>> trace="true">
>>> <route>
>>>        <from uri="direct:RequestProcessor" />
>>>        <to uri="xslt:requestToSOAP.xsl"/>
>>>        <wireTap uri="direct:AggregatorServices"/>
>>>        <to uri="xslt:requestToManager.xsl"/>
>>>        <convertBodyTo type="javax.xml.transform.dom.DOMSource" />
>>>        <to uri="nmr:{http://services.locator/}Service:ServicesPort"/>
>>>        <to uri="direct:AggregatorServices"/>
>>> </route>
>>>
>>> <route>
>>>        <from uri="direct:AggregatorServices" />
>>>        <aggregate strategyRef="myAggregatorStrategy" outBatchSize="2">
>>>                <correlationExpression>
>>>                        <constant>true</constant>
>>>                </correlationExpression>
>>>                <to uri="direct:ProcessorServices"/>
>>>         </aggregate>
>>> </route>
>>>
>>>  <route>
>>>        <from uri="direct:ProcessorServices" />
>>>        <to uri="log:Response"/>
>>> </route>
>>> </osgi:camelContext>
>>>
>>> log:Response only print out response from <to
>>> uri="nmr:{http://services.locator/}Service:ServicesPort"/>.
>>>
>>> Meanwhile, the log inside myStratRef (myAggregatorStrategy), which I ask
>>> to
>>> concatenate the old & new exchanges shows both exchanges were
>>> concatenated.
>>> How do I get this concatenated exchange to be sent (to log:Resposne)?
>>>
>>> Regards.
>>> --
>>> View this message in context:
>>> http://old.nabble.com/Aggregator%27s-not-returning-combined-exchanges%2C-only-returns-last-exchange-tp27270355p27270355.html
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>
>>>
>> 
>> 
>> 
>> -- 
>> 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
>> 
>> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/Aggregator%27s-not-returning-combined-exchanges%2C-only-returns-last-exchange-tp27270355p27320250.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to