У меня есть одно входящее сообщение на бирже.Это сообщение разделено на несколько исходящих файлов.Проблема, которую я вижу, состоит в том, что только файл LAST произведен.Журналы показывают, что мы успешно создали все различные файлы, однако, можно записать только один файл в обмен, обработанный LAST файл?пожалуйста, скажите мне, что я делаю не так, Камелерс.заранее спасибо!
установка CamelFileName или Exchange.FILLE_NAME
Логика, которая разбивает один файл на несколько файлов, помещая содержимое определенного файла в ArrayList....
log.info("Create output file for current asset: " + asset + " with fileName: " + fileName);
StringBuilder ofsb = new StringBuilder();
ofsb.append(outFolder).append("_").append(fileName).append("_").append(TimeStamp()).append(".csv");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(baos);
for (String row : serviceRecords) {
out.writeBytes(row + System.lineSeparator());
}
out.flush();
log.info("**** serviceRecords " + " file name: " + fileName + "****");
Iterator<String> pitr = serviceRecords.iterator(); //get the existing service records in array list
while ( pitr.hasNext()) {
String sRecord = pitr.next();
log.info(pitr.next());
}
exchange.getOut().setHeader("CamelFileName", ofsb.toString()); //CamelFileName Exchange.FILE_NAME
log.info("Asset File Name: " + exchange.getOut().getHeader("CamelFileName"));
exchange.getOut().setBody(baos.toByteArray());
baos.close();
out.close();
serviceRecords = new ArrayList<String>();
sb = new StringBuilder();
ofsb = new StringBuilder();
}
несколько файлов, сгенерированных и записанных в файловую систему на основе одного входящего файла при обмене.
это пример входного файла: предыдущий процесс собирает всеотношения активов, тег сопоставляется с активом.все теги, принадлежащие конкретному активу, добавляются в коллекцию.Коллекция активов помещается в ArrayList.Он просматривает все активы, связанные с этим входным файлом, создавая файл вывода для каждой уникальной коллекции активов.
1548278588, G1.A_96BD1,1027.8129883, Float, GOOD 1548278590, G1.A_96BD1,1046.7722168, Float, GOOD1548278591, G1.A_96BD1,1037.0013428, поплавок, ХОРОШО 1548278596, G1.A_96BD1,1046.5593262, поплавок, ХОРОШО 1548278598, G1.A_96BD1,1034.9998779, поплавок, ХОРОШО
В ТЕЧЕНИЕ ВАСЕДИНСТВЕННЫЙ ОБМЕН ???
Я знаю, что-то подобное работает, но это не соответствует верблюжьей инфраструктуре.
ofsb.append (outFolder) .append (""). Append (fileName). .append ( "") добавить (TimeStamp ()) добавить ( "CSV.").Файл файл = новый файл (dir, ofsb.toString ());FileWriter fileWriter = новый FileWriter (файл);CRLFPrintWriter out = новый CRLFPrintWriter (fileWriter);for (String outputLine: serviceRecords) {// otemp, oServiceRecords, seviceRecords, osRecords out.println (outputLine);}
out.flush();
out.close();
fileWriter.close();
serviceRecords = new ArrayList<String>(); //reset serviceRecords record list of output records
sb = new StringBuilder(); //reset record builder
ofsb = new StringBuilder(); //reset file name
}
---- СНИПИТ Camel XML
<route autoStartup="true" id="core.fleet.asset.splitterRoute">
<from id="_from4" uri="{{fileEnrichmentEndpoint}}"/>
<process id="_process4" ref="assetCollectorProcessor"/>
<process id="_process5" ref="fleetAssetSplitter"/>
<to id="_splitOut" uri="{{fileSplitDestination}}"/>
</route>