2017-05-20 4 views
0

Ich habe einen sehr einfachen Anwendungsfall, in dem ich eine Sammlung von Stichen zusammenstellen und versuchen, Aggregator EIP dafür zu verwenden. Allerdings, wenn die Strecke zu starten versucht, es klagt kann es keine Aggregator Strategie finden:Wie Apache Camel Aggregator zu verwenden

java.lang.IllegalArgumentException: AggregationStrategy or AggregationStrategyRef must be set on Aggregate 

unten ist, wie ich das Problem reproduzieren kann:

import org.apache.camel.RoutesBuilder; 
import org.apache.camel.builder.RouteBuilder; 
import org.apache.camel.test.junit4.CamelTestSupport; 
import org.junit.Test; 

import java.util.Arrays; 
import java.util.List; 

public class AggregatorTest extends CamelTestSupport { 
    private static final List<String> LIST = Arrays.asList(new String[] {"one", "two", "three"}); 
    @Override 
    protected RoutesBuilder createRouteBuilder() throws Exception { 
     return new RouteBuilder() { 
      @Override 
      public void configure() throws Exception { 
       from("direct:start") 
         .split().body() 
         .setHeader("cheese", constant("camembert")) 
         .aggregate(constant("all")) 
         .to("mock:end"); 
      } 
     }; 
    } 

    @Test 
    public void shouldAggregateStrings() throws Exception { 
     sendBody("direct:start", LIST); 
    } 
} 

Natürlich eine sehr einfache Möglichkeit, dies zu beheben würde sei es, eine Aggregationsstrategie-Implementierung zu erstellen und meine Route zu konfigurieren, um sie zu verwenden. Allerdings würde ich gerne verstehen, warum der Weg jetzt eingerichtet ist, funktioniert nicht. Nach Angaben der Kamel-Dokumentation auf here:

standardmäßig Camel DefaultAggregationCollection und UseLatestAggregationStrategy verwendet, so dieses einfache Beispiel wird

nur die zuletzt empfangenen Austausch für die gegebene Korrelation Expression halten

Ich habe auch bemerkt DefaultAggregationCollection ist nicht mehr Teil des Kamelkerns. Also was fehlt mir hier?

Antwort

0

Das ist die alte Dokumentation. Die korrekte Dokumentation ist unter: http://camel.apache.org/aggregator2

zB die Liste der EIP Links auf die richtige Dokumentation hat: http://camel.apache.org/eip

Sie Beispiele von diesen Links finden können, und auch in diesem kleinen Beispiel: https://github.com/apache/camel/blob/master/examples/camel-example-aggregate/README.md

Und Die Camel in Action-Bücher haben ein EIP-Kapitel, in dem der Aggregator noch viel mehr Details enthält: http://camel.apache.org/books