What's about this: public class GlobalAggrStratergy implements AggregationStrategy {
private static final transient Logger log = LoggerFactory.getLogger(GlobalAggrStratergy.class); private int counter = 0; @Override public Exchange aggregate(Exchange oldExchange, Exchange newExchange) { try { log.info("oldExchange: {}", oldExchange); log.info("newExchange: {}", newExchange); // happens only the first time if (oldExchange == null) { // create and initialize the StringBuilder newExchange.getIn().setBody(new StringBuilder(newExchange.getIn().getBody(String.class))); return newExchange; } // append the new payload to the old exchange StringBuilder stringBuilder = oldExchange.getIn().getBody(StringBuilder.class); stringBuilder.append("\n"); stringBuilder.append(newExchange.getIn().getBody(String.class)); counter++; } catch (Exception ex) { throw new RuntimeException(ex); } oldExchange.setProperty("AGGREGATION_COUNTER", counter); if (counter == 50000) { counter = 0; } return oldExchange; } } Best, Christian On Mon, Apr 30, 2012 at 4:50 PM, ebinsingh < ebenezer.si...@verizonwireless.com> wrote: > I am very sorry for not understanding this properly. > Please accept my apologies if am wasting your time. > > I am totally missing something here. > Below is the change I had made (Hopeing that this is what you meant by > saying Mutate the old exchange). > > I am using StringBuilder so that the process os faster and also helps not > creating many String objects. > > 1. when I use String.class all works fine until am running out of > heapspace. > 2. If I use StringBuilder, I get the following nullPointer. > 3. Looks like there is no converter type to conver from String to > StringBuilder. > > > 2012-04-30 10:34:38,087 INFO [Camel (camel-1) thread #2 - > seda://streamQueue] ipdr.GlobalAggrStratergy - is oldExchange null: > Exchange[null] AND is newExchange null: Exchange[null] > 2012-04-30 10:34:38,087 INFO [Camel (camel-1) thread #2 - > seda://streamQueue] ipdr.GlobalAggrStratergy - Aggregate old orders: null > 2012-04-30 10:34:38,087 INFO [Camel (camel-1) thread #2 - > seda://streamQueue] ipdr.GlobalAggrStratergy - Aggregate new order: null > 2012-04-30 10:34:38,087 ERROR [Camel (camel-1) thread #2 - > seda://streamQueue] ipdr.GlobalAggrStratergy - Error aggregating > java.lang.NullPointerException > at > com.vzw.fp.ipdr.GlobalAggrStratergy.aggregate(GlobalAggrStratergy.java:26) > > > > @Override > public Exchange aggregate(Exchange oldExchange, Exchange > newExchange) { > try{ > log.info(" is oldExchange null: "+oldExchange+" > AND is newExchange null: > "+newExchange); > if (oldExchange == null) { > return newExchange; > } else { > log.info("Aggregate old orders: " + > oldExchange.getIn().getBody(StringBuilder.class)); > log.info("Aggregate new order: " + > newExchange.getIn().getBody(StringBuilder.class)); > oldExchange.getIn().setBody( > > oldExchange.getIn().getBody(StringBuilder.class). > > append(newExchange.getIn().getBody(StringBuilder.class)+"\n")); > counter++; > } > }catch(Exception ex){ > log.error("Error aggregating", ex); > } > oldExchange.setProperty(Exchange.CONTENT_LENGTH, counter); > if(counter >= 50000) > counter = 0; > oldExchange.getIn().setHeader(Exchange.FILE_NAME_ONLY, > newExchange.getProperty(Exchange.FILE_NAME_ONLY)); > return oldExchange; > } > > -- > View this message in context: > http://camel.465427.n5.nabble.com/Java-heap-space-issue-with-Aggregation-tp5670608p5676110.html > Sent from the Camel - Users mailing list archive at Nabble.com. >