2016-12-02 2 views
0

ProblemstellungFrühling basierend Camel Aggregator mehrere Dateien

Ich habe zwei Dateien Datei1 und Datei2 zu lesen, das Kamel Bindy werden muss analysiert werden. Die Daten aus File1 und File2 müssen aggregiert und dann in die Datenbank eingefügt werden.

was ist der beste Weg, um die Agregator zu definieren, ist es eine kann jemand eine Probe liefern Implementierung

Hier ist, was ich will

<!--route1 --> 
<route> 
    <from ref="file1Endpoint" /> 
    <unmarshal ref="pojo1" /> 
</route> 
<!--route2 --> 
<route> 
    <from ref="file2Endpoint" /> 
    <unmarshal ref="pojo2" /> 
</route> 

Antwort

0

Verwenden Sie die Content Enricher Bereitstellen eines Aggregation Strategy, so etwas wie die folgende Liste:

@Component 
MyAggregationStrategy implements AggregationStrategy { 

    public static final String PRE_ENRICH_KEY = "PRE_ENRICH_KEY"; 

    //this is meant to be called *before* the actual enrich call 
    //to store the state before the enrichment 
    public void init(Exchange exchange) { 
    final String originalBody = exchange.getIn().getBody(String.class); 
    exchange.setProperty(PRE_ENRICH_KEY, originalBody); 
    } 

    @Override 
    public Exchange aggregate(Exchange original, Exchange enrichmentResponse) { 

    final String originalBody = original.getProperty(PRE_ENRICH_KEY, String.class); 

    //enrichmentResponse is the Exchange coming from the 2nd file endpoint 
    //the enricher returns 

    //your processing logic to merge the 2 happens here 
    String result = //.. 
    original.getIn().setBody(result); 

    return original; 

    } 

} 

Und schließlich wird die Route in etwa so aussehen:

@Component 
public class MyRouteBuilder extends RouteBuilder { 

    @Autowired 
    private MyAggregationStrategy myAggregateStrategy; 

    @Override 
    public void configure() throws Exception { 
     from("fileEndpoint1") 
      .bean(myAggregateStrategy, "init") 
      .enrich("fileEndpoint2", myMerger); 
      //continue from here one to Bindy 
    } 

    //.. 
} 
+0

Danke für die Antwort. Ich werde es versuchen in srping DSL Weg –

+0

@ Harish Malavade - wenn Sie dieses nützliche finden Sie bitte Upvoting und/oder die Annahme der Antwort – dimitrisli

Verwandte Themen