Ich bin ziemlich neu in Apache Camel und habe ein paar Fragen. Ich möchte meinen Weg folgendes zu tun: zweimalApache Camel beitreten alle Börsen in verschachtelten Split
- Last eine Liste von Listen in
LoadSomeThingsProcessor
- gespalten, so kann ich
- Filter jedes Element in der inneren Liste Griff aus ein paar Dinge, die ich nicht brauchen
- kommen alle übrigen Börsen von der inneren Spaltung
- dann wieder schließlich kommen (zurück zu einem Austausch)
Meine Route, die som sieht ething wie folgt aus:
from("direct:myRoute")
.process(new LoadSomeThingsProcessor())
.split(body())
.streaming()
.process(new SomeProcessor())
.split(body())
.streaming()
.filter(new SomeFilter())
.aggregate(header("myHeader", new MyAggregationStrategy())
.completionPredicate(new MyCompletionPredicate())
// more processors
// aggregate again (should just be one exchange after this point
// more processors
.to("direct:someOtherRoute");
MyCompletionPredicate
‚s matches
Methode ist einfach:
return exchange.getIn().getProperty("CamelSplitComplete", Boolean.class);
Ich möchte sicherstellen, dass jeder Austausch in jedem Split zusammen aggregiert werden, bevor ich weiter.
Meine Fragen sind: - Die CamelSplitComplete
Header ist irgendwie nie wahr. Was könnte das verursachen? - Wird versucht, in einem verschachtelten Split zu aggregieren, um Probleme zu verursachen? - Was passiert, wenn der letzte Austausch (der, der CamelSplitComplete = true
haben soll, herausgefiltert wird? Wie kann ich wissen, dass ich alle meine Austauschvorgänge zusammengelegt habe? - Ist das der richtige Weg, um dieses Problem anzugehen? was soll ich sonst noch beachten?
FYI meiner Aggregationsstrategie nimmt nur den Körper der neuen Börse und fügt sich den Körper des alten Austausches.
Vielen dank im Voraus.