0
我試圖從一個目錄中選擇一個文件,拆分一個文件並將每個拆分的行添加到activemq。在這個過程中,我遇到了異常處理的問題。比方說目錄中的文件是一個二進制文件(可執行文件),然後拆分器會丟棄org.apache.camel.RuntimeCamelException和java.nio.charset.MalformedInputException異常。如果發生這種情況,那麼我需要捕獲這些異常,沒有什麼應該添加到activemq中,並且只有特定的線程應該在記錄異常之後退出。在線提及並編寫了以下代碼,但不知道如何停止添加到activemq並退出特定的線程。異常處理駱駝
<route id="msg_producer">
<from uri="input.file.from" />
<doTry>
<split parallelProcessing="true" executorServiceRef="msgProducer"
streaming="true">
<tokenize token="\n"></tokenize>
<to uri="input.activemq.to" />
</split>
<doCatch>
<exception>org.apache.camel.RuntimeCamelException</exception>
<exception>java.nio.charset.MalformedInputException</exception>
<handled> <constant>true</constant></handled>
<setBody>
<simple>${exception.stacktrace}</simple>
</setBody>
<setHeader headerName="CamelFileName">
<simple>${file:onlyname.noext}_error.log</simple>
</setHeader>
</doCatch>
</doTry>
</route>
您可以在分離器上使用stopOnException選項 –
儘管更清潔的解決方案可能是過濾文件,而不是嘗試拆分並將其發送到AMQ if它是一個二進制文件。 –
謝謝克勞斯,但過濾文件將太難選擇,因爲目錄可以具有不同擴展名的可執行文件,圖像,腳本等文件。此外,我無法獲得有關區分可打印ascii文件和二進制文件的幫助。 –