gpt4 book ai didi

java - Camel : doTry in the Choice clause

转载 作者:行者123 更新时间:2023-12-02 03:03:33 24 4
gpt4 key购买 nike

同事们,我正在尝试使用 choicedoTry 配置 Camel 路由。我的问题是无法解析第二个 when 子句上的方法“when”。问题:是否可以在 choice 子句中使用 doTry 构造?

路线如下:

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();

}

更新

删除.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();

}

更新另一种变体

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");*/
}

最佳答案

将错误处理与路由分开,

 onException (exception)
handled (true)
process failure processor

然后就有路线

from ftp
to validate

关于java - Camel : doTry in the Choice clause,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42083421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com