当前位置: 首页 > 知识库问答 >
问题:

引发异常时,驼峰文件组件不应重命名文件

宋华美
2023-03-14

我有骆驼路线配置如下:

<route id="text-file-route">
                        <from 
                                uri="file:files/merchant?antInclude={{include-file-type}}&amp;initialDelay=1000&amp;delay=1000&amp;move=${file:name.noext}.processed" />
                        <split streaming="true">
                                <tokenize token="\n" />
                                <process ref="splitBatchAdapterProcessor" />
                                <process ref="merchantStreamProcessor" />
                                <process ref="merchantTableProcessor" />
                                <to uri="mock:dummy" />
                        </split>
                </route>

使用当前配置,即使在处理文件时引发异常,文件也会被重命名。我想要的是,只有在文件时没有引发异常时,才应该重命名文件。

我在使用骆驼2.12。

共有1个答案

曾晨
2023-03-14

您需要打开 shareUnitOfWork,以便拆分器返回异常,以便文件使用者可以回滚。您可以在以下位置阅读有关此内容的更多信息: http://camel.apache.org/splitter

  <split streaming="true" shareUnitOfWork="true">
 类似资料:
  • 如果这是个愚蠢的问题,请原谅。骆驼洞对我来说是新鲜事,所以我真的没有“全球视野”。我喜欢在camel安装中使用队列。我发现ActiveMQ是一个解决方案,然后偶然发现了两个不同的组件(或uri):ActiveMQ和JMS。 由于ActiveMQ正在实现JMS 1.1,使用这两种URI有什么区别?或者换句话说:我可以同时使用这两种方法吗?如果可以,在哪些情况下应该使用哪一种?

  • 所以我使用了DataInputStream、FileInputStream、BufferInputStream、FileReader、BufferedReader、Scanner。它们都抛出FileNOtFoundException或CorruptedStreamException。

  • 文件重命名 文件重命名 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * *//* * 程序清单:更改名称 * * 程序会创建一个操作文件的函数并导出到msh命令列表 * 在

  • 任何Avro格式的文件写入尝试都会失败,堆栈跟踪如下。 我们正在使用Spark 2.4.3(使用用户提供的Hadoop)、Scala 2.12,并且我们在运行时使用任一Spark-shell加载Avro包: org.apache.sparkavro_2 或spark提交: 提交org.apache.sparkavro_2 spark会话报告已成功加载Avro包。 ... 在任何一种情况下,当我们尝

  • 我正试图使用FileWriter将一些文本写入文件。程序运行时不抛出任何异常,除了它应该抛出的异常(写入文件是抛出异常的一部分),但文件保留为空。该文件与包含异常的.java文件和抛出异常的.java文件位于同一目录中。 我正在正确地刷新和关闭FileWriter对象,它位于try/catch块中,该块应该打印代码遇到的任何异常,我尝试使用带有FileWriter作为参数的PrintWriter,

  • 问题内容: 我想批量重命名目录中的多个文件,以便从文件名中删除前面的数字和连字符。 如何使用linux命令执行此操作? 问题答案: 这应该使它: 它从块的开头(即数字)开始多次,然后连字符并将其从文件名中删除。 如果不在您的计算机中,则可以使用循环和: 测试 要么: