Collegues, у меня есть маршрут, который проверяет xml по xsd. Я в этом случае маршрут вызова .to("jdbc:DataSource")
каждый раз, когда какой-либо XML является действительным:Camel: Как однажды вставить данные в таблицу DB, если действительны только все xmls?
from("ftp://....." +
"&throwExceptionOnConnectFailed=true" +
"&filterDirectory=${date:now:yyyymmdd}")
.choice()
.when(header("CamelFileName").contains("XML_A.....")).log("Validate ${file:name}")
.to("validator:file:C:\\integration\\xsds\\xml_a.xsd").log("${file:name} is valid")
.when(header("CamelFileName").contains("XML_B.....")).log("Validate ${file:name}")
.to("validator:file:C:\\integration\\xsds\\xml_b.xsd").log("${file:name} is valid")
.when(header("CamelFileName").contains("XML_C.....")).log("Validate ${file:name}")
.to("validator:file:C:\\integration\\xsds\\xml_c.xsd").log("${file:name} is valid")
.end()
.log("Upload table ExtractS")
.to("bean:stgExtractToSQL")
.to("jdbc:dataSource") /*Here i would like to execute only one insert into one single table*/
;
Как назвать .to("jdbc:dataSource")
только один раз (только), когда все XML действительны? P.S. После .to("jdbc:dataSource")
Мне нужно обработать каждый XML-файл. Спасибо.
Как вы определяете 'когда все xml valid'? Если на FTP-сервере всего 3 файла, вы можете отличить этот случай от случая с 5 файлами? – SubOptimal
Рассмотрите тот факт, что каждый файл будет порождать отдельный поток. Вам нужно будет каким-то образом сохранить состояние, а затем только вызвать базу данных, когда предикат будет выполнен. Возможно, вам стоит взглянуть на проверку требований EIP http://camel.apache.org/claim-check.html – noMad17
Collegues, есть ли способ выполнить вставку один раз до начала маршрута? Мне кажется, это подходит и мне. – May12