以成功路线为先决条件的路线(Camel)

时间:2018-02-28 13:33:26

标签: java apache-camel enterprise-integration

我目前有以下骆驼路线:

//Only continue to next route if success
from("file:///tmp/camel/input")
    .routeId("Test Route")
    .to("file:///tmp/camel/test")
    .onCompletion().onCompleteOnly()
        .log("Success for file: ${header.CamelFileName}")
        .setHeader("recipientList", constant("file:///tmp/camel/output, file:///tmp/camel/output2"))
        .recipientList(header("recipientList"))
    .end();

仅当前一个路由成功时才需要将文件发送给收件人。

然而,在运行路由时,我得出的结论是onCompletion()块中的.to也从输入文件夹中读取,但文件已经消失,因此无法将它们拾取并写入收件人。 (我不能在from上设置noop = true,因为我确实希望文件在发送给收件人之后消失了......)

那么我们如何将文件路由到收件人,并将成功的先前路由作为先决条件?

1 个答案:

答案 0 :(得分:0)

这将有效

Error:Program type already present: android.support.design.widget.CoordinatorLayout$ViewElevationComparator

我觉得from("file:///tmp/camel/input") .routeId("Test Route") .to("file:///tmp/camel/test?noop=true") .onCompletion().onCompleteOnly() .log("Success for file: ${header.CamelFileName}") .end(); from("file:///tmp/camel/test?noop=true") .to("file:///tmp/camel/output") .to("file:///tmp/camel/output2"); 在这里是多余的,因为如果传输到OnCompletion的文件失败,第二条路线将不会触发。

另一点是你可以使用/camel/test选项只是为了确保在传输完整文件之前第二条路线没有开始

move=.done