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

骆驼文件轮询-将文件移动到已处理路径而不进行处理

纪枫
2023-03-14
<route id="fileProcessor">
    <from uri="file://{{ResponsePath}}?preMove={{ResponseInProgressPath}}/${header.CamelFileNameOnly}&amp;move={{ResponseProcessed}}/${header.CamelFileNameOnly}&amp;moveFailed={{ResponseFailed}}/${header.CamelFileNameOnly}&amp;delay=2000"/>
    <doTry>
        <convertBodyTo type="java.lang.String"/>
        <log message="Response ${body}"/>
        <bean ref="fileProcessorBean" method="processFile" />
        <log message="File Processed Successfully"/>
    <doCatch>
        <exception>com.test.CustomFileException
        </exception>
        <handled>
            <constant>true</constant>
        </handled>
    </doCatch>
    </doTry>
</route>

Im面临的问题是将多个文件加载到轮询文件夹中,有些文件被处理并移动到已处理路径,有些文件未经处理直接移动到已处理路径

共有1个答案

沈飞舟
2023-03-14

正如@screwtape已经评论过的,所有文件都被移动到已处理路径,因为您捕获并处理异常。

  • 文件被消耗
  • 在try块中处理
  • 如果一切顺利,则文件使用者将其移动到已处理路径
  • 如果发生异常,则由catch块处理
  • 因此异常不会到达文件使用者
  • 因此文件使用者认为一切顺利,并将其移动到已处理路径

删除整个dotry/docatch块,以便异常到达文件使用者,它将把这些文件移动到失败路径。

 类似资料:
  • 我正在尝试重新排序在Apache Camel之上编写的应用程序摄取文件的顺序。文件需要按设定的顺序处理,如果应用程序没有按顺序处理文件,则文件中数据的各种聚合和其他处理将失败。为了保护应用程序,我尝试使用重新排序器EIP来确保文件按顺序处理。但是我发现重新排序器似乎会导致文件在下游组件通过交换之前被移动到. camel目录中。 我写了一个简单的例子来说明这个问题: 当测试尝试写入输出文件时,会引发

  • 我正在尝试使用多部分/表单数据将文件上传到骆驼路由。一切都很好,但是,我无法获得原始文件名。骆驼版本是:3.14.1 更新 使用对路由的以下修改进行更新。我设法处理二进制文件(获取文件名并存储它们)。但是,对于文本文件,该文件将附加边界页脚: 路线定义: 先谢谢你了 爱德华

  • 问题内容: 我正在编写一个简单的命令行Java实用程序。我希望用户能够使用运算符传递相对于其主目录的文件路径。所以像 我的问题是有没有办法让Java自动解决这种类型的路径?还是需要为操作员扫描文件路径? 似乎应该将这种类型的功能烘焙到对象中。但这似乎并非如此。 问题答案: 在大多数情况下,从用户处获得一个简单的字符(在转换之前)就足够了- 因为波浪号仅在路径目录部分的第一个字符时才扩展到主目录。

  • 我正在尝试从目录中选取一个文件,拆分一个文件,并将每一个拆分行添加到ActiveMQ中。我在这个过程中遇到了异常处理的问题。假设目录中的文件是一个二进制文件(可执行文件),那么splitter会显示org.apache.camel.runtimeCamelException和java.nio.charset.MalFormedInputException异常。如果出现这种情况,那么我需要捕获这些异

  • 我试图创建一个Camel路由,它将并行处理传入的IMAP消息。邮件组件应该将传入的邮件分发到不同的线程(但是每个消息都应该按顺序通过两个处理步骤)。