【问题标题】:Apache Camel: Do I need to make my FTP-Consumer route transactional?Apache Camel:我是否需要让我的 FTP-Consumer 路由具有事务性?
【发布时间】:2018-11-09 18:42:16
【问题描述】:

我有这些 FTP 端点属性:

include=.*.xml&delay=60s&consumer.bridgeErrorHandler=true&throwExceptionOnConnectFailed=true&binary=true&move=.done&soTimeout=300000

所以端点需要每 60 秒搜索一次 *.xml 文件并使用它。之后,文件将继续并移动到“完成”目录中。

恐怕如果 f.e.通过移动文件会发生 IOException,该文件将已从端点根目录中删除。

问题是:我是否需要让我的 FTP-Consumer 路由具有事务性?

另一个问题是:您能否建议为这种情况添加另一个有用的 ftp 消费者属性?

【问题讨论】:

    标签: java spring-boot apache-camel


    【解决方案1】:

    如果 f.e.通过移动文件会发生 IOException

    根据GenericFileEndpoint.java,如果移动失败,您可以使用setMoveFailed() 定义将文件移动到哪里。 FTP 端点应继承该选项,请参见此处:FtpEndpoint

    我认为您不需要使端点事务性。

    【讨论】:

    • 如果您不知道什么是事务路由,请参阅:camel.apache.org/transactional-client.html
    • “我不认为你需要让你的端点事务。”你能解释一下吗?
    • 您担心文件可能被删除,然后在处理过程中可能会出现一些错误,之前文件被移动。它会丢失。使用 setter,您可以定义在发生错误时复制文件的位置,因此您的文件不会丢失。因此,在我看来不需要采取其他行动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 2016-09-29
    相关资源
    最近更新 更多