1

我在我的 Apache Camel 配置中使用以下内容:

<camel:route errorHandlerRef="loggingErrorHandler" id="ROUTE_ICL">

    <camel:from uri="file:{{camel.route.icl.from.file.path}}?filter=#fileFilterMAVRO&amp;initialDelay={{camel.route.from.file.initialDelay}}&amp;delay={{camel.route.from.file.delay}}&amp;useFixedDelay=true&amp;runLoggingLevel=TRACE&amp;startingDirectoryMustExist={{camel.route.from.file.startingDirectoryMustExist}}&amp;autoCreate={{camel.route.from.file.autoCreate}}&amp;maxMessagesPerPoll={{camel.route.from.file.maxMessagesPerPoll}}&amp;eagerMaxMessagesPerPoll=true&amp;delete=false&amp;readLock=idempotent&amp;readLockLoggingLevel=OFF&amp;readLockRemoveOnRollback=false&amp;readLockRemoveOnCommit=false&amp;idempotent=true&amp;idempotentKey=${file:onlyname}&amp;idempotentRepository=#iclMessageIdRepository&amp;recursive=false&amp;move={{camel.route.icl.complete.file.path}}&amp;moveFailed={{camel.route.icl.failed.file.path}}" />

    <camel:to uri="sftp://user1@ecomt199.qintra.com:22/nas/tst2/inputfiles?password=Pass1234&amp;runLoggingLevel=TRACE"/>

</camel:route>

现在,这正在起作用。它能够 sftp 我的文件。

问题是我希望我的文件位于:/nas/tst2/inputfiles。但它在:/home/user1/nas/tst2/inputfiles

现在,我怎样才能让它在/nas/tst2/inputfiles上运行?/nas/ 和 /home/ 都在 <root>/ 上。

问题是更改此默认值/home/

我可以使用哪个属性?我无法在 Camel DSL 中找到或理解如何做到这一点。

4

3 回答 3

4

Camel 在当前版本中确实不允许完全限定路径。但是,只要用户具有权限,您就可以使用这样的路径作为解决方法:

../../../../../../../../this_is_the_root_folder/usr/....

您基本上从用户的目录开始,然后在树中向上直到到达根目录。您只需要确保添加了足够的内容../../即可到达根目录。

这不是最好的解决方案,但它很简单并且对我有用。

于 2017-08-22T08:03:52.327 回答
0

我认为最好的解决方案不是 Camel DSL。您用于 SFTP 的用户的根目录位于主目录中。

我认为一个好的解决方案是使用正确的根目录在 FTP 服务器中配置另一个用户,您希望在其中放置文件。

于 2017-08-19T07:33:40.650 回答
0

你不能。当前的 camel-ftp 实现特别不允许完全限定的路径。所有路径都相对于用户的主目录。

为了在我的项目中解决这个问题,我分叉了组件并删除了去除前导路径分隔符的代码。

于 2017-08-20T15:48:19.277 回答