Я новичок в Talend и создаю компонент, чтобы объединить четыре сообщения в одно.Я использую компонент cFile, который потребляет 4 файла из каталога, затем aggregrator и затем процессор.Код для агрегированного Бина выглядит следующим образом:
package beans;
import java.util.HashSet;
import java.util.Set;
import org.apache.camel.Exchange;
import org.apache.camel.processor.aggregate.AggregationStrategy;
public class AggregateBody implements AggregationStrategy{
public Exchange aggregate(Exchange oldEx, Exchange newEx) {
Set<String> fileNameSet = new HashSet<String>();
Set<String> bodySet = new HashSet<String>();
if(oldEx==null){
fileNameSet.add((String) newEx.getIn().getHeader("fileName"));
bodySet.add(newEx.getIn().getBody(String.class));
newEx.setProperty("fileName",fileNameSet);
System.out.println(fileNameSet);
newEx.setProperty("body",bodySet);
System.out.println(bodySet);
return newEx;
}
oldEx.getProperty("fileName",fileNameSet);
fileNameSet.add((String) oldEx.getIn().getHeader("fileName"));
oldEx.setProperty("fileName",fileNameSet);
System.out.println(fileNameSet);
oldEx.getProperty("body",bodySet);
bodySet.add(oldEx.getIn().getBody(String.class));
oldEx.setProperty("body",bodySet);
return oldEx;
}
}
Так что я не получаю причину, почему sysout для fileName равен [null].