Коллеги, я пытаюсь настроить маршрут верблюда с помощью choice
и doTry
. Моя проблема Cannot resolve method 'when'
на второй when
статья. Вопрос: можно ли использовать doTry
строительство в choice
статья?Верблюд: doTry в разделе Choice
Маршрут выглядит следующим образом:
public void configure() {
from("sftp://.....").choice()
.when(header("CamelFileName").contains("XML P")).log("Validate ${file:name}").bean(new MessProcessor(), "logInputMessDetails")
.doTry().
to("validator:file:C:\\Users...\\xsds\\p.xsd").log("${file:name} is valid")
.doCatch(ValidationException.class)
.log("XML P is not valid")
.to("file:sftp-inbound\\data-invalid\\" + header("CamelFileParent").toString())
.bean(messProcessor, "stopCamel")
/*The problem is here*/ .when(header("CamelFileName").contains("XML X")).log("Validate ${file:name}").bean(new MessProcessor(), "logInputMessDetails").
doTry().to("validator:file:C:\\Users\....\xsds\\position.xsd").log("${file:name} is valid").
doCatch(ValidationException.class).log("XML X is not valid").to("file:sftp-inbound\\data-invalid\\" + header("CamelFileParent").toString()).
bean(messProcessor, "stopCamel")
.end();
}
UPDATE
Маршрут после .bean(messProcessor, "stopCamel")
удаления:
public void configure() {
from("sftp://.....").choice()
.when(header("CamelFileName").contains("XML P")).log("Validate ${file:name}").bean(new MessProcessor(), "logInputMessDetails")
.doTry().
to("validator:file:C:\\Users...\\xsds\\p.xsd").log("${file:name} is valid")
.doCatch(ValidationException.class)
.log("XML P is not valid")
.to("file:sftp-inbound\\data-invalid\\" + header("CamelFileParent").toString())
.end;
/*The problem is still here*/ .when(header("CamelFileName").contains("XML X")).log("Validate ${file:name}").bean(new MessProcessor(), "logInputMessDetails").
doTry().to("validator:file:C:\\Users\....\xsds\\position.xsd").log("${file:name} is valid").
doCatch(ValidationException.class).log("XML X is not valid").to("file:sftp-inbound\\data-invalid\\" + header("CamelFileParent").toString()).
bean(messProcessor, "stopCamel")
.end();
}
UPDATE Еще один вариант
public void configure() {
from("sftp:...}")
.choice()
.when(header("CamelFileName").contains("XML_POS")).log("Validate ${file:name}")
.to("validator:file:C:\\pos.xsd").log("${file:name} valid")
.when(header("CamelFileName").contains("XML_SETS")).log("Validate ${file:name}")
.to("validator:file:C:\\sets.xsd").log("${file:name} valid").end()
.onException(Exception.class)
.process(new FailureResponseProcessor())
.handled(true);
/*to("file:sftp-inbound");*/
}
Статья, большое спасибо. – May12