2017-05-20 3 views
0

私は非常にシンプルな使い方をしています。私はこのスティリングのコレクションをまとめて、このためにアグリゲーターEIPを使用しようとしています。しかし、それはそれはアグリゲータ戦略を見つけることができない文句を言いルート起動しようとすると:以下Apache Camelアグリゲーターの使い方

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

すると、私は問題を再現する方法です。もちろん

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); 
    } 
} 

この考えを修正するために非常に簡単な方法集約戦略の実装を作成し、それを使用するように自分のルートを構成することです。しかし、私はなぜ方法が今設定されていない動作しない理由を理解したいと思います。キャメルはちょうど 私はまたDefaultAggregationCollectionに気づい

与えられた相関式の最新の受信交換を続けるDefaultAggregationCollectionと UseLatestAggregationStrategyので、この単純な例を使用してデフォルトで

hereのラクダの資料によると、もはやラクダのコアの一部ではありません。だから私はここで何が欠けているのですか?

答えて

0

これは古いドキュメントです。 http://camel.apache.org/aggregator2

などのEIPのリストが正しいドキュメントへのリンクがあります:http://camel.apache.org/eip

あなたはそれらのリンクから例を見つける、そして同様に、この小さな例ではすることができます:正しいドキュメントはであるhttps://github.com/apache/camel/blob/master/examples/camel-example-aggregate/README.md

そして、 Camel in Actionの書籍にはEIPの章があります。ここではアグリゲーターについても詳しく説明します:http://camel.apache.org/books