Instead of outBatchSize=2 did you try batchSize=2 maybe? Also does it perhaps work properly without that wiretap?
On Fri, Jan 22, 2010 at 10:41 AM, lekkie <[email protected]> wrote: > > This is what comes form my log: > > 11:38:31,370 | INFO | 0: Batch Sender | MyAggregationStrategy | > rg.tempuri.MyAggregationStrategy 23 | new: Exchange[Message: > StringSource[<soap:Envelope > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><_ns_:RequestResponse > xmlns:_ns_="http://services.locator/"><return > xmlns:tns="http://services.locator/"><code>-1</code><message>Unknown > error</message></return></_ns_:RequestResponse></soap:Body></soap:Envelope>]] > 11:38:31,370 | INFO | 0: Batch Sender | MyAggregationStrategy | > rg.tempuri.MyAggregationStrategy 30 | newly formed: Exchange[Message: > <?xml version="1.0" encoding="UTF-8"?> > <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> > <soap:Body> > <kxml> > <request> > <amountText>230</amountText> > <sellAccSelBox>current</sellAccSelBox> > </request> > </kxml> > </soap:Body> > </soap:Envelope> > <soap:Envelope > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><_ns_:RequestResponse > xmlns:_ns_="http://services.locator/"><return > xmlns:tns="http://services.locator/" ><code>-1</code><message>Unknown > error</message>xmlns:xsi="... [Body clipped after 1000 chars, total length > is 1301]] > > > In the log above, myaggregationstrategy prints the concatenated message, but > the problem is that the printed exchange is not returned to <from > uri="direct:ProcessorServices" />, only the last exchange gets to <from > uri="direct:ProcessorServices" />. > > I hope this is clear. > > > > > > Stan Lewis-3 wrote: >> >> Hmmm, I tested your aggregator code as-is on 2.2-SNAPSHOT here and it >> works fine: >> >> 2010-01-22 09:41:18,444 [0: Batch Sender] INFO >> JoinStringAggregatorTest - New: Exchange[Message: one] >> 2010-01-22 09:41:18,444 [0: Batch Sender] INFO >> JoinStringAggregatorTest - old: Exchange[Message: one] >> 2010-01-22 09:41:18,445 [0: Batch Sender] INFO >> JoinStringAggregatorTest - new: Exchange[Message: two] >> 2010-01-22 09:41:18,445 [0: Batch Sender] INFO >> JoinStringAggregatorTest - newly formed: Exchange[Message: >> onetwo] >> 2010-01-22 09:41:18,800 [0: Batch Sender] INFO AGGREGATION_RESULT >> - Exchange[BodyType:String, Body:onetwo] >> >> What version are you running there, can you try the latest snapshot? >> >> On Fri, Jan 22, 2010 at 8:39 AM, lekkie <[email protected]> wrote: >>> >>> See code below: >>> >>> package org.tempuri; >>> >>> import org.apache.camel.Exchange; >>> import org.apache.camel.Header; >>> import org.apache.camel.Message; >>> import org.apache.camel.processor.aggregate.AggregationStrategy; >>> import org.apache.commons.logging.Log; >>> import org.apache.commons.logging.LogFactory; >>> >>> public class MyAggregationStrategy implements AggregationStrategy { >>> >>> private static final transient Log LOG = >>> LogFactory.getLog(MyAggregationStrategy.class); >>> >>> public Exchange aggregate(Exchange oldExchange, Exchange >>> newExchange) >>> { >>> >>> if (oldExchange == null) >>> { >>> LOG.info("old is null only new available"); >>> LOG.info("New: " + newExchange); >>> return newExchange; >>> } >>> >>> LOG.info("old: " + oldExchange); >>> LOG.info("new: " + newExchange); >>> >>> Message newIn = newExchange.getIn(); >>> String oldBody = >>> oldExchange.getIn().getBody(String.class); >>> String newBody = newIn.getBody(String.class); >>> newIn.setBody(oldBody + newBody); >>> >>> LOG.info("newly formed: " + newExchange); >>> >>> return newExchange; >>> } >>> >>> >>> } >>> >>> >>> >>> >>> Stan Lewis-3 wrote: >>>> >>>> Can you post what you're doing in your aggregation strategy? >>>> >>>> On Fri, Jan 22, 2010 at 4: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. >>>>> >>>>> >>>> >>>> >>> >>> -- >>> View this message in context: >>> http://old.nabble.com/Aggregator%27s-not-returning-combined-exchanges%2C-only-returns-last-exchange-tp27270355p27273231.html >>> Sent from the Camel - Users mailing list archive at Nabble.com. >>> >>> >> >> > > -- > View this message in context: > http://old.nabble.com/Aggregator%27s-not-returning-combined-exchanges%2C-only-returns-last-exchange-tp27270355p27275141.html > Sent from the Camel - Users mailing list archive at Nabble.com. > >
