2
我有以下途徑:阿帕奇駱駝EXEC消息體
<route id="import">
<from uri="file:/var/inputfolder?delete=true"/>
<log message="Importing ${file:name} started."/>
<setProperty propertyName="keepbody">
<simple>${body}</simple>
</setProperty>
<setHeader headerName="BrandId">
<simple>${file:name}</simple>
</setHeader>
<setHeader headerName="CamelExecCommandArgs">
<simple>${file:absolute.path} ${header.BrandId.toString.split("_")[0]} Zip -a erase</simple>
</setHeader>
<to uri="exec://./transfile.php?workingDir=/usr/bin/&args&useStderrOnEmptyStdout=true"/>
<log message="stdout/stderr of /usr/bin/transfile.php:\n ${body}"/>
<choice>
<when>
<simple>${bodyAs(String)} contains 'Return OK'</simple>
<log message="Importing ${file:name} finished."/>
</when>
<otherwise>
<log message="Importing ${file:name} failed."/>
<setBody>
<simple>${exchangeProperty.keepbody}</simple>
</setBody>
<to uri="file:/var/rejected"/>
</otherwise>
</choice>
</route>
路由檢查文件的文件夾的/ var/inputfolder。如果找到,則執行該腳本transfile.php,並在它的參數使用文件名。如果執行的輸出不包含字符串「返回OK」,標準輸出將被放在一個文件與原文件名到該文件夾的/ var /拒絕。 但我想才達到,在在/ var /拒絕文件夾中,其原有內容的文件出現,而不是與執行的輸出。我知道,這是EXEC組件
https://camel.apache.org/exec.html
的正常行爲,但我怎樣才能改變這種實現前面提到的?
提前致謝!
感謝您的幫助,但不幸的是我需要更多的有點。我改變了我的問題的途徑,但我得到containnig行異常:org.apache.camel.language.simple.types.SimpleIllegalSyntaxException:由造成未知的函數:exchangeProperty.keepbody在位置0 $ {} exchangeProperty.keepbody 這裏有什麼問題? – bayerb
我使用Apache的ServiceMix的-5.3.0,駱駝芯(2.13.2),駱駝EXEC(2.13.2) – bayerb
作爲回答說,你可能需要使用「財產」,而不是如果您使用的是舊版本你做的駱駝 –