【问题标题】:Apache Camel File Formats阿帕奇骆驼文件格式
【发布时间】:2014-10-09 09:18:09
【问题描述】:

我正在开发一个自动将文件上传到 SFTP 服务器的项目。我的项目现在正在生产中,并且按照最初的需求规范运行。我的项目从预定义的位置获取一个 txt 文件。现在由于 SFTP 服务器的大小限制,现在必须在上传之前压缩 txt 文件。

我现在想改变我的骆驼路线,不仅可以处理 txt 文件,还可以处理 xls、csv 和 Zip 文件。

我该怎么做?

目前我的路线如下:

from("quartz://myscheduler?cron={{cron}}")
.pollEnrich("file:{{pickuplocation}}?moveFailed=error/${file:name.noext}_${date:now:yyyyMMddHHmmssSSS}.${file:ext}&move=SFTPCompleted/${date:now:MMM}-${date:now:yyyy}/${file:name.noext}_${date:now:yyyyMMddHHmmssSSS}.${file:ext}") 
        .setHeader("CamelFileName", simple("${file:name}"))
        .setHeader("RouteID",constant("Route ID"))          
        .multicast()
            .to("sftp://"+username+"@"+SftpLocation+"password="+password+"&stepwise=false&disconnect=true&fileName=${file:name.noext}.txt")
        .end()

TIA

【问题讨论】:

    标签: java apache-camel


    【解决方案1】:

    我不明白您为什么使用如此复杂的文件复制方式。如果我没记错的话,你可以用这个:

    from("file:{{pickuplocation}}?moveFailed=error/${file:name.noext}_${date:now:yyyyMMddHHmmssSSS}.${file:ext}&move=SFTPCompleted/${date:now:MMM}-${date:now:yyyy}/${file:name.noext}_${date:now:yyyyMMddHHmmssSSS}.${file:ext})
    .to("sftp://"+username+"@"+SftpLocation+"password="+password+"&stepwise=false&disconnect=true")
    

    这将拾取pickupLocation目录中的任何文件,FTP组件会将同名文件写入远程服务器。

    您可以使用 File 组件的 'include' 参数设置正则表达式以仅匹配某些文件类型:http://camel.apache.org/file2.html

    【讨论】:

    • 非常感谢 Geert 的帮助。它现在的行为符合我的预期。你是明星。
    猜你喜欢
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 2013-02-09
    • 2018-11-27
    相关资源
    最近更新 更多