ampofila
ampofila

Reputation: 686

Apache Camel split with new line token and use aggregation stategy

I have the following route:

from("file:/home/tmp/test?move=.done")
    .routeId("file")
    .split(body().tokenize("\n"),new GroupedBodyAggregationStrategy())
    .process(new Processor() {
      @Override
      public void process(Exchange exchange) throws Exception {
        exchange.getMessage().setHeader("Test", "test");
        System.out.println(exchange.getIn().getBody());
      }
  })

and the file that is being consumed is:

1234,56676,2345
234,213,412
124,423,5236

I would expect only one exchange to reach the processor after split and that its body contains all the above lines, however it behaves like I do not use an aggregation strategy at all. 3 exchanges reach the processor each with the body that corresponds to a single line. Also, it does not matter if I use GroupedBodyAggregationStrategy or a custom one, it is always the same. What am I doing wrong?

Upvotes: 0

Views: 758

Answers (1)

Guillaume WEILL
Guillaume WEILL

Reputation: 131

Give a look here enter link description here

What you look is :

from("file:/home/tmp/test?move=.done")
.routeId("file")
.split(body().tokenize("\n"),new GroupedBodyAggregationStrategy())
  // instructions on each message from the split (.ie each row here)
.end()
  // instructions on aggregated result
.process(new Processor() {
  @Override
  public void process(Exchange exchange) throws Exception {
    exchange.getMessage().setHeader("Test", "test");
    System.out.println(exchange.getIn().getBody());
  }
})

Upvotes: 1

Related Questions