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

当进程中抛出异常时,如何防止Camel中的文件重命名?

宗政招
2023-03-14

当我在处理器中抛出/捕获异常时,我在阻止原始文件被重命名方面遇到了一点问题。

<route customId="true" id="localRoute">
    <from uri="{{ftp.pull.LOCAL.server}}" />
    <process ref="Processor" />
    <to uri="{{ftp.push.LOCAL.route}}" />
</route>
<onException>
    <exception>com.myException.ThrownException</exception>
    <handled><constant>true</constant></handled>
</onException>

(我抛出并捕获该异常是为了防止文件进入其他路由的幂等文件存储库。许多路由使用此处理器。)

共有1个答案

宣俊豪
2023-03-14

除非删除 或将其标记为false,否则文件将被重命名。

如果您处理异常,它将不会传播,并且您的文件组件认为Camel交换成功处理,它将重命名该文件。

 类似资料:
  • 我们的编写器设计用于将记录写入关系数据库。如果任何记录发生异常,Spring Batch将对区块中的每条记录执行回滚并重试写入操作。这导致发生SQL重复密钥异常,因为区块中先前处理的记录已成功写入数据库。 我们已经尝试使用noRetry()和noRollback(),明确指定不应该触发重试或回滚的异常列表。 根据Spring Batch在线留档noRollback()可用于防止在ItemWrite

  • 问题内容: 我有这样的方法: 我想抛出一个内。编译器不允许我这样做,因为不允许将我的方法扔在那里。但是我需要抛出一个的子类来进行测试 (我不能抛出Unchecked)。显然这是一个hack,但我需要进行测试。我尝试过EasyMock,但它也不允许我这样做。任何想法如何做到这一点? 谢谢,肖恩·阮 问题答案: 方法1: Alexey Ragozin的这篇文章介绍了如何使用泛型技巧引发未声明的检查异常

  • @apiResponse似乎也没有更正响应类型。 如本问题所述,如何在swagger Codegen中处理多个响应/返回类型(204为空,400为非空等)? 我可以这样扔 但是有没有更好的方法来做到这一点呢?我只想将.getResponseBody()作为对象而不是字符串返回。 非常感谢。

  • 我的程序从控制台获取表示日期的输入,即。我会相应地存储所有数据 在这个try-catch块中,我检查变量“m”是否是正确的月份,关于日期,介于1和12之间。 如果“m”不是数字,则抛出。 我希望能够在if条件中抛出异常并终止显示抛出的错误和与之关联的消息的程序。

  • 问题内容: 这是一些示例代码: 如果我运行该程序并将其设置为 like ,则一切正常。 另一方面,如果我回答,那不会嘲笑我的有趣笑话。相反,我得到这个(如预期的那样): 有没有一种方法可以使它忽略不是int的条目,或者用“有多少个入侵者”重新提示?我想知道这两种方法。 问题答案: 你可以使用的诸多一个是方法有预验证。 这可以防止从甚至被抛出,因为你总是确保它WILL你读它之前匹配。 java.ut

  • 在你可以捕获异常之前,一些代码必须抛出一个异常。任何代码都可能会抛出异常:您的代码,来自其他人编写的包(例如Java平台附带的包)或Java运行时环境的代码。无论是什么引发的异常,它总是通过 throw 语句抛出。 您可能已经注意到,Java平台提供了许多异常类。所有类都是Throwable类的后代,并且都允许程序区分在程序执行期间可能发生的各种类型的异常。 您还可以创建自己的异常类来表示在您编写